cx_Freeze - 如何将多个文件转换到构建文件夹中

cx_Freeze - how do I convert multiple files into the build folder

我制作了一个程序,它使用 os.startfile() 启动另一个 python 程序。

我想把它作为两个 exe 文件,使用 subprocess.call() 启动第二个文件,在 1 个构建文件夹中,但我不知道该怎么做。

我尝试为两者制作一个安装文件,创建 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__'

有什么想法吗?

cx_Freeze 创建的程序不是单个 exe 文件。它是在构建文件夹下创建的整个文件夹。如果你只是复制exe文件,你只是复制了程序的一部分。

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

可以使用以下方法在一个构建中包含两个 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)

您可能需要进一步编辑此脚本,但它应该会在同一个构建文件夹中生成两个 exe。

如果您转到 python 位置(python.exe 所在的位置)并导航至 Lib\site-packages\cx_Freeze\samples\advanced 你应该找到一个名为 setup.py 的脚本的位置,看看它,你的答案应该在那里。

Cx_Freeze中的exe有依赖关系。通过复制 exe,您只是复制了程序的一部分。