MacVim KaoriYa 2009091 で起きた現象
※20090923 リリース版で対応して頂き、そちらでは正しく起動できた。
MacVim KaoriYa 20090911 をターミナルから使用した際に起きた現象。
PHP スクリプトのデバッグ用プラグインの DBGp Client を使用した際に発生。
DBGp client - a remote debugger interface to the DBGp protocol (tested only with XDebug/PHP) : vim online
/Path/to/.vim/plugin/debugger.vim の処理中にエラーが検出されました: 行 125: Traceback (most recent call last): File "<string>", line 1, in <module> File "/Path/to/.vim/plugin/debugger.py", line 53, in <module> import socket File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 46, in <module> import _socket ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_socket.so, 2): Symbol not found: _PyExc_IOError Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_socket.so Expected in: flat namespace in /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_socket.so 行 178: Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'debugger_init' is not defined
となった。
このプラグインが悪いのかと思って、自分で単純なプラグインを作って試してみた。
test.vim
pyfile $HOME/.vim/plugin/test.py python hoge('hoge')
test.py
#!/usr/bin/env python def hoge(name): print 'Hello ' + name
上記を ~/.vim/plugin/ に入れて vim を起動したら、起動前に、 Hello hoge と正しく表示される。
test.py に import socket を一行追加すると、エラーになるよう。
#!/usr/bin/env python import socket def hoge(name): print 'Hello ' + name
/Path/to/.vim/plugin/test.vim の処理中にエラーが検出されました: 行 1: Traceback (most recent call last): File "<string>", line 1, in <module> File "/Path/to/.vim/plugin/test.py", line 2, in <module> import socket File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 46, in <module> import _socket ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_socket.so, 2): Symbol not found: _PyExc_IOError Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_socket.so Expected in: flat namespace in /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_socket.so 行 2: Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'hoge' is not defined 続けるにはENTERを押すかコマンドを入力してください
ちなみに普通にコマンドラインからはエラーにならないし、test.py を単発で動かしてもエラーにならない。
$ python Python 2.6.2 (r262:71600, Sep 21 2009, 16:28:19) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>>
環境が MacOS 10.6.1
Python は MacPorts から Python26 をインストール。こちらは特にエラーもなくインストールができている。
vimrc には
let $PYTHON_DLL = "/opt/local/lib/libpython2.6.dylib"
を記述している。
Teraminal.app から vim の起動は、
vim: aliased to env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim -u $HOME/.vimrc "$@"
で起動している。
ちなみに以前 (Leopard 時代)は PrivatePorts の vim7.1 を使用してて、その時は発生しなかった。
とりあえず報告用に…。
2009/09/23 01:31(追記)
20090922 版で試したけど、依然同じメッセージが出る。
let $PYTHON_DLL を .vimrc から削除しても同じ。
2009/09/23 20:40(追記)
20090923 版がリリースされたので、試したところ、無事にエラーにならずに起動できた。
素早い対応ありがとうございます!