VimのPythonインターフェースから使うpythonは変更しにくくPYTHONPATHもちょっと違う
追記
このエントリーで書いてるquickrun.vimは古いものでした。
別のリポジトリで公開されているものがあり、巷でquickrunといえばその別のを指すみたいです。詳しくはどうやら古いquickrunを使っていたらしい事に気がついた - kanonjiの日記をみてください。このエントリーを見て古い方を入れちゃった方がいたら申し訳ないです。
Vimで書いたコードを直ぐ実行できるquickrun.vimプラグインを導入してみた - kanonjiの日記でquickrun.vimを入れてから、Macにデフォルトで入ってたvimの代わりにMacVimをコマンドラインでも使うようにしました。すると、前は出てなかったエラーが出るようになったので、ちょっと調べてます。
Error detected while processing /path/to/.vim/bundle/quickrun/autoload/quickrun.vim: line 549: Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named threading
\r
でquickrun使ったら、こんなエラーメッセージが出ます。ただ、動作はするようですぐ消えてしまいます。見るからにPythonのエラーメッセージです。
調べた事
quickrun.vimはPythonインターフェースを使っている
https://github.com/ujihisa/quickrun/blob/5d231832d94ed95dbab37994da8d90646ca4be4c/autoload/quickrun.vim#L515
ちょうどエラーの箇所がここです。if has('python')〜endif
なので、Pythonインターフェースが使えないなら何もしないっぽいので、エラーが出つつも動いてるのはこれが理由っぽい。
Pythonインターフェースと素のPythonではPYTHONPATHが違う
if has('python') python <<EOM import sys print sys.version print sys.path EOM endif
.vimrcにPythonインターフェースでsys.path
を出力するように仕込んでみました。
$ vim 'import site' failed; use -v for traceback 2.5.1 (r251:54863, May 5 2011, 18:37:34) [GCC 4.0.1 (Apple Inc. build 5465)] ['/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python25.zip', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.5/', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.5/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.5/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.5/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.5/../../Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.5/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.5/lib-dynload']
これがPythonインタフェースからのPYTHONPATH。
$ /usr/bin/python Python 2.5.1 (r251:54863, May 5 2011, 18:37:34) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> print sys.path ['', '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip', '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5', '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload', '/Library/Python/2.5/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/PyObjC']
こっちが普通にPythonを起動した場合のPYTHONPATH。
- Pythonインターフェースの方には
/Library/Python/2.5/site-packages
が無い。 - 似てるパスだけど
〜〜/Versions/2.6/〜〜
と〜〜/Versions/2.5/〜〜
の違いがある。
大きく分けてこんな違いがあって、とにかくPYTHONPATHは違うものを使っている様子。
Pythonのバージョン
上記でsys.path
を出すとき、ついでにsys.version
を出してみてます。これは同じバージョンを示しているので、Macのデフォルトである/usr/bin/python
が使われているのが分かります。
$ type python
python is /Users/myuser/.pythonbrew/pythons/Python-2.7.2/bin/python
ただ、MacBookにはpythonbrewを入れてあって、自分の使うシェルではPATHはここに通ってます。そのシェルからvimを起動しているけど、どうやらPythonインターフェースから使うPythonには、このPATHは関係ないみたいです。
環境
Mac | Mac OS X 10.5.8(Leopard) |
Vim | 7.3.146 (KaoriYa 20110330) |
quickrun | https://github.com/ujihisa/quickrun/commit/5d231832d94ed95dbab37994da8d90646ca4be4c |