Python モジュールをロードする Audacious Media Player 用のプラグインを作成しようとしています。Python 埋め込みコードはpython-2.6
ソース (embed/Demo) からのものです。これはコマンドラインでコンパイルされ、
gcc -o demo demo.c -lpython2.6 -lm -L/usr/lib/python2.6/config
-lpython2.6 -lm -L/usr/lib/python2.6/config
CC引数に追加しました。
そして、インポートpygtk
とgtk
モジュールを実行する Python スクリプトをロードします。これは正常に機能します。
しかし、プラグイン (共有ライブラリ) をコンパイルした後、次のエラーが発生します (これはgtk
、ネイティブ ライブラリを使用するすべての python モジュールで同じです)。
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "./xyz.py", line 7, in <module>
import gtk
File "/usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py", line 30, in <module>
import gobject as _gobject
File "/usr/lib/pymodules/python2.6/gtk-2.0/gobject/__init__.py", line 26, in <module>
from glib import spawn_async, idle_add, timeout_add, timeout_add_seconds, \
File "/usr/lib/pymodules/python2.6/gtk-2.0/glib/__init__.py", line 22, in <module>
from glib._glib import *
ImportError: /usr/lib/libpyglib-2.0-python2.6.so.0: undefined symbol: PyExc_ImportError
Python インタープリターをセットアップするための C コードには、PySys_SetArgv
呼び出しがないだけです。私はそれを偽造しようとしましたが、同じエラーが発生しました!