2017-07-27 104 views
1

我制作了一个程序,该程序使用os.startfile()启动另一个Python程序。cx_Freeze - 如何将多个文件转换为构建文件夹

我想这两个exe文件,启动第二个使用subprocess.call()而不是在1生成文件夹,但我不知道如何做到这一点。

我试图使两个安装文件,创建2名建立的文件夹,然后复制exe文件的1成其他的build文件夹,但得到这个:

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

它可以包括两个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) 

你可能会编辑这个脚本进一步但它应该在同一个build文件夹中产生两个exe文件。

,如果你去你的Python的位置(其中python.exe是),然后导航到 库\站点包的一个例子可以发现\ 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文件。这是在build文件夹下创建的整个文件夹。如果你只是复制exe文件,你只能复制部分程序。

而不是试图在同一个文件夹中有两个exe文件,你应该做的是有两个文件夹,每个文件夹是一个完整的cx_Freeze程序。您的子流程调用应该调用../program2/program2.exe而不是仅仅调用./program2.exe

+0

你不需要。你只需要确保你使用相同的脚本编译你想包含在一个build文件夹中的所有python文件。 – Simon

相关问题