実行時にPythonモジュールを動的にロードするPythonアプリケーションがあります(を使用__import__)。ロードするモジュールは、' plugins' というパッケージ (つまりplugins、__init__.pyetc で呼び出されるサブフォルダ) にあります。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。これでプラグインが見つかりました。しかし、私はまだこの醜い手作業のハッキングに満足していません.