2017-07-27 1 views
1

私はos.startfile()を使って別のpythonプログラムを起動するプログラムを作っています。cx_Freeze - 複数のファイルをビルドフォルダに変換するには

これは2つのexeファイルで、代わりにsubprocess.call()を使用して1つのビルドフォルダに2番目のファイルを作成したかったのですが、これを行う方法はわかりません。

私は、両方のためのセットアップファイルを作成する2つのビルドフォルダを作成し、その後の他のビルドフォルダにexeファイルの1をコピーしようとしましたが、この得た:

Traceback (most recent call last): 
File "C:\Python34\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 12, 
in <module> __import__(name + "__init__") 
ImportError: No module named 'menu_record__init__' 

は、任意のアイデアをお持ちですか?

答えて

0

次の方法で1つのビルドに2つのexeファイルを含めることが可能である:

import sys 
from cx_Freeze import setup, Executable 

options = { 
'build_exe': {'path': sys.path + ['modules']} 
} 

executables = [ 
    Executable('script_1.py'), 
    Executable('script_2.py')] 

setup(
    name='two exe in one folder', 
    version='0.1', 
    description='Two exe in a single build folder', 
    options=options, 
    executables=executables) 

おそらく、さらにこのスクリプトを編集する必要がありますが、それは同じビルドフォルダに2つのexeファイルを生成する必要があります。

あなたは(python.exeがある)あなたのpythonの場所に移動し、 のLib \サイト - パッケージに移動した場合の例を見つけることができます\ cx_Freezeサンプルは\スクリプトと呼ばれるセットアップを見つける必要があり場所を進めた\ .py、それを見て、あなたの答えはそこにあるはずです。

Cx_Freezeのexeには依存関係があります。 exeファイルをコピーすると、プログラムの一部だけがコピーされます。

+0

この[投稿の](https://stackoverflow.com/questions/35172483/python-cx-freeze-for-two-or-more-python-files-modules)回答には、それが記載されています。 – Simon

1

cx_Freezeによって作成されたプログラムは、単一のexeファイルではありません。これは、ビルドフォルダの下に作成されたフォルダ全体です。 exeファイルをコピーするだけでは、プログラムの一部をコピーしています。

同じフォルダに2つのexeファイルを作成するのではなく、2つのフォルダがあり、それぞれ完全なプログラムです。あなたのサブプロセス呼び出しは、./program2.exeの代わりに../program2/program2.exeを呼び出す必要があります。

+0

あなたはそうする必要はありません。同じスクリプトを使用して、1つのビルドフォルダに含めるすべてのPythonファイルをコンパイルする必要があります。 – Simon

関連する問題