2011-08-13 7 views
1

私はPython 2.7とPyGTKで書かれたプロジェクトをpy2exeでコンパイルしています。私は2つのモジュール、 "Launchpad.py"と "RegistrationScreen.py"を持っています。 Launchpad.pyからRegistrationScreen.pyを開く必要があります。py2exeでPyGTK Pythonモジュールエラーを開く

私は現在、次のコードを使用しています:私はテストしたときにこれが正常に動作します

def open_registration(event, data=None): 
    subprocess.Popen(["python", "RegistrationScreen.py"]) 

- ウィンドウはシェルウィンドウを開かず開いています。

しかし、py2exeを使用してコンパイルすると、作成したアプリケーションの実行時に次のログエラーが発生します。

Traceback (most recent call last): File "Launchpad.py", line 26, in open_registration File "subprocess.pyc", line 672, in init
File "subprocess.pyc", line 882, in _execute_child WindowsError: [Error 2] The system cannot find the file specified

コードを修正してpy2exeで正しくコンパイルするにはどうすればよいですか? Launchpad.pyからRegistrationScreen.pyモジュールのウィンドウを開いて、最終的な.exeファイルにエラーを投げない別の方法はありますか?

+0

タイトルまたはタグにpy2exeと言いたいことがあります。 – mgalgs

+0

私は解決策はありませんが、あなたが試すことができるいくつかのことがあります。 py2exeが作成したexeファイルと同じディレクトリにRegistrationScreen.pyを置くかどうかを確認してください。それはエラーなしで実行されるexeです。それがうまくいくならば、あなたのsetup.pyスクリプトでは、パッケージの一部としてRegistrationScreen.pyを含めるいくつかの方法を見つける必要があります。たぶん - http://docs.python.org/distutils/setupscript.html#installing-package-data? – arunkumar

+0

それはそれを修正しませんでした...これはまあまあです、RegistrationScreen.pyはおそらく私のアプリケーション全体で最も重要なソースセキュリティの重要なモジュールです。 – CodeMouse92

答えて

1

問題はパスです。 RegistrationScreen.pyはおそらくdist/library.zipの中で圧縮されていますが、それを呼び出すコードはdist/RegestrationScreen.pyで探しています。

私はこれに最善の解決策が何か分かりません... py2exeはファイルにアクセスするための痛みです。

また、subprocess.Popen(["python", "RegistrationScreen.py"])を実行したくない場合もあります。これは、ユーザーがPythonをインストールしてシステム全体でアクセスできることを保証できないためです。別のプロセスが本当に必要な場合は、RegistrationScreen.pyでpy2exeを個別に実行して別の.exeを作成し、それをメインの.exeのdistフォルダに組み込む必要がありますか?

私はそれが幾分巻き込まれていることは知っていますが、おそらくうまくいくでしょう。私が言ったように、より良い方法があるかもしれません。

+0

は良い点を挙げています。なぜあなたはPythonスクリプト/ exeからPythonスクリプトを呼び出していますか? 2番目のスクリプトが、より一般的に使用されるPythonモジュール/クラスでないのはなぜですか? – Mark

+0

RegistrationScreenはLaunchpadのサブ画面になっているはずです...おそらく別のモジュールであることを再考する必要があります。ありがとうございました! – CodeMouse92

関連する問題