EmacsのシェルモードでPythonを起動すると違うとこから起動する
Emacsをめでたくフルスクリーンでも使えるようになり、
- コード編集画面
- 実行・デバッグのためのシェルモード
- バッファ一覧など
という感じで3つのウィンドウを配置するようになりました。
シェルモードのおかげでEmacs上で実行までできて便利だなーと思っていたら、インストールしてあるはずのモジュールが「ありません」というエラーが。あれ?
変だなと思ってEmacsとiTermでsys.pathの出力を比べてみました。
・iTerm
>>> import sys >>> for i in sys.path: ... print i ... /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/simplejson-1.9.1-py2.5-macosx-10.3-i386.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/MySQL_python-1.2.2-py2.5-macosx-10.3-i386.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/mechanize-0.1.7b-py2.5.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ClientForm-0.2.7-py2.5.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/py2app-0.3.6-py2.5.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/bdist_mpkg-0.4.3-py2.5.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/macholib-1.1-py2.5.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/modulegraph-0.7-py2.5.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/altgraph-0.6.7-py2.5.egg /Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/pygoogle /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/gtk-2.0 >>> len(sys.path) 21
>>> import sys >>> for i in sys.path: ... print i ... /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/PIL /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/gtk-2.0 >>> len(sys.path) 11
んん、明らかに違う場所から読み込んでる。本来はiTermの方が正しい(普段使ってる)んだけど・・・
ひとまずiTermの方のsys.pathをコピーしてPYTHONPATHを指定したらモジュールの読み込みはできるようになったものの、これじゃ応急処置だなぁ。なんでEmacsのシェルモードだと全然違うんだろう?原因は一体なんなんだー
あと、シェルモードでPythonのインタラクティブシェルを使っている時、for文中などでTabを押してもインデントされない。これもなかなか困る。