実行時にPythonモジュールを動的にロードするPythonアプリケーションがあります(を使用__import__
)。ロードするモジュールは、' plugins
' というパッケージ (つまりplugins
、__init__.py
etc で呼び出されるサブフォルダ) にあります。python インタープリターから実行したり、py2exe を使用して Windows バイナリにコンパイルした場合でも、すべて正常に動作します。
そこから OSX アプリをビルドしようとしましたが、成功しましたが、.app を実行すると ImportError: ' no module named plugins.xxxx
' が発生しました。
.app コンテンツを参照すると、フォルダー内のすべてのプラグイン モジュールが表示されるため、py2app (、、py2exe に対して行うことと同じ) に正しいオプションを指定したと確信'includes': [...]
しています。'packages':['plugins']
Contents/Resources/lib/python2.5/plugins/
では、なぜアプリがモジュールを見つけられないのでしょうか (何らかのパスの問題である必要があります)。
編集:
私はそれを機能させる方法を見つけましたが、それは良い解決策ではありません: Python が (を使用して) モジュールを検索するパスを印刷したとき、フォルダーがリストされていないprint sys.path
ことに気付きました。Contents/Resources/lib/python2.5/plugins/
ただ、フォルダContents/Resources/
はあるので、plugins
フォルダをフォルダに移動しましたContents/Resources
。これでプラグインが見つかりました。しかし、私はまだこの醜い手作業のハッキングに満足していません.