Eclipseでパッケージをツリー表示に
eclipseでパッケージがフラットに表示されていて、何か違うとおもってツリー表示にする方法を調べたのでメモ。
[Package Explorer]の右上にある[▽]をクリックして[PackagePresentation] > [Hierarchical] を選択すればOK。
フォルダは階層構造で表示されているけど、パッケージはフラットに設定されているので紛らわしい。
Pythonで試しにパッケージをつくってみたものの
環境はMacOSXElcapitanconda env
でPython3.5
まずはこんな感じでパッケージを作ってみた
$ mkdir package101 cd package101
__init__.py
#! /usr/bin/env python # -*- coding: utf-8 -*- def greet(): print('Hello, World!')
setup.py
#! /usr/bin/env python # -*- coding: utf-8 -*- from setuptools import setup from setuptools import find_packages def main(): setup( name='package101', version='0.0.2', description='My first package', author='shindos', author_email='email@example.je', packages=find_packages(), entry_points={ 'console_scripts': [ 'greet = package101:greet', ], } ) if __name__ == '__main__': main()
で、
$ python setup.py install
すれば、greet
がコマンドとして作成できるはず。
が、
$ greet
とすると、以下のエラーがでた。
Traceback (most recent call last): File "/Applications/anaconda/envs/packaging/bin/greet", line 9, in <module> load_entry_point('package101==0.0.2', 'console_scripts', 'greet')() File "/Applications/anaconda/envs/packaging/lib/python3.5/site-packages/setuptools-20.7.0-py3.5.egg/pkg_resources/__init__.py", line 542, in load_entry_point File "/Applications/anaconda/envs/packaging/lib/python3.5/site-packages/setuptools-20.7.0-py3.5.egg/pkg_resources/__init__.py", line 2569, in load_entry_point File "/Applications/anaconda/envs/packaging/lib/python3.5/site-packages/setuptools-20.7.0-py3.5.egg/pkg_resources/__init__.py", line 2229, in load File "/Applications/anaconda/envs/packaging/lib/python3.5/site-packages/setuptools-20.7.0-py3.5.egg/pkg_resources/__init__.py", line 2235, in resolve ImportError: No module named 'package101'
そんなパッケージないよと。いろいろ調べてpythonにパッケージのpathが通ってないのかと考えて
PYTHONPATH
に、パッケージのあるディレクトリを指定してみたけどだめ。
エラーになってる__init__.py
をみてみると、こんな感じ。
#!/Applications/anaconda/envs/packaging/bin/python # EASY-INSTALL-ENTRY-SCRIPT: 'package101==0.0.2','console_scripts','greet' __requires__ = 'package101==0.0.2' import sys from pkg_resources import load_entry_point if __name__ == '__main__': sys.exit( load_entry_point('package101==0.0.2', 'console_scripts', 'greet')()
ここで無理やり、以下を加えてsysにパッケージへのpathを追加してみた。
sys.path.append("/path/to/package")
そしたら、おお。うまくいった。
$ greet Hello, World!
setuptoolからみてるsysと、コンソールから使ってるPythonのsysの中身が違う。
ということなので、たぶん使ってるPythonが違うのね。ということで
PYTHONPATH
に、パッケージのあるディレクトリを指定して__init__.py
とsetup.py
の最初の一行を#! /usr/bin/env python
からApplications/anaconda/envs/packaging/bin/python
に変更してもうまくいった。
$ greet Hello, World!
シバンの問題だった。
print(sys.version)
して、setup.py
とgreet
したときのpythonの差異をみようとしたけど一緒だった。
よくよく見たら勘違いで、ちゃんとPYTHONPATH
にpathが通ってないだけだった。
conda createでつくった仮想環境にconda install jupyterするとエラーになる(OS X El Capitan)
$ conda create -n test python=2.7 anaconda $ source activate test $ conda install jupyter
して、
$ jupyter notebook
するとエラーがでる。
Traceback (most recent call last): File "/Applications/anaconda/envs/test/bin/jupyter-notebook", line 4, in <module> import notebook.notebookapp File "/Applications/anaconda/envs/test/lib/python2.7/site-packages/notebook/notebookapp.py", line 61, in <module> from .services.contents.manager import ContentsManager File "/Applications/anaconda/envs/test/lib/python2.7/site-packages/notebook/services/contents/manager.py", line 16, in <module> from nbformat import sign, validate, ValidationError File "/Applications/anaconda/envs/test/lib/python2.7/site-packages/nbformat/__init__.py", line 33, in <module> from .validator import validate, ValidationError File "/Applications/anaconda/envs/test/lib/python2.7/site-packages/nbformat/validator.py", line 21, in <module> raise ImportError(str(e) + verbose_msg) ImportError: No module named functools32 Jupyter notebook format depends on the jsonschema package: https://pypi.python.org/pypi/jsonschema Please install it first.
原因はこれ?conda install時にeasy install 的な何かがはしっているのかしら。
とにかく作った環境でconda install jupyterすると、なんか変になるので、以下のようにすれば anacondaとjupyterを仮想環境で共存させることができた。 まわりくどい。
$ conda create -n test python=2.7 $ source activate test $ pip install jupyter $ conda install anaconda $ jupyter notebook
Chacoをつかう
chacoというライブラリを使いたかったけど、Anacondaには入ってなかったので、インストールするまで。
Chaco
データをいい感じに見せてくれる。
Interactive plotting with Chaco — chaco 4.5.0 documentation
condaでインストール
condaを使ってインストールします。 以下を参考に。
https://anaconda.org/anaconda/chaco
conda install -c https://conda.anaconda.org/anaconda chaco
これでchacoのサンプルコードを走らせてみた。
import numpy as np from chaco.shell import * x = np.linspace(-2*pi, 2*pi, 100) y = np.sin(x) plot(x, y, "r-") title("First plot") ytitle("sin(x)") show()
すると以下のエラーが。。
Unable to import the image backend for the qt4 toolkit (reason: ['ImportError: No module named kiwisolver\n']). In [ ]:
kiwisolverというモジュールがないみたいなので、インストール
conda install -c https://conda.anaconda.org/anaconda kiwisolver
そして先ほどのコードを実行してみたところ今度は以下のエラーが。
NameError: name 'pi' is not defined
これはサンプルコードが間違っていると判断。np.pi
にして以下のようにすれば正しく表示された。わーい。
import numpy as np from chaco.shell import * x = np.linspace(-2*np.pi, 2*np.pi, 100) y = np.sin(x) plot(x, y, "r-") title("First plot") ytitle("sin(x)") show()
Jupyterインストール
環境設定時に調べたりするのがとてもめんどくさいので、ログとして書いていくことにする。
基本的には公式ドキュメントのインストールの手順にしたがってやるだけ。
http://jupyter.readthedocs.org/en/latest/install.html
AnacondaというPythonのディストリビューションをインストールして設定していく。
蛇足になるけど、公式にもpipとcondaの二通りのインストール方法が説明されているので、 pipとcondaは併用できないのね。ということで、今後はcondaを使っていこう。
Rのカーネルインストールは以下のREADMEの通りやってもうまくいかなかったけど、
IRkernel/IRkernel: R kernel for Jupyter
以下のサイトを参考にしたらうまくいった。
打ったコマンド
conda install -c r ipython-notebook r-irkernel
ijavascript と irubyも以下を参考にすればいけた。