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
PythonMacPorts から 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 版がリリースされたので、試したところ、無事にエラーにならずに起動できた。
素早い対応ありがとうございます!