cx_Freeze 和 python 个包(不只是一个模块)
cx_Freeze with python packages (not just one module)
所有 cx_Freeze 示例均针对一个文件(模块)。我需要为整个 python 包制作一个可执行文件。为什么这么难做?
这是我的目录:
test1/
__init__
__main__
我 运行 从命令行执行此操作的方法是使用以下 cmd
python -m test1
__init__
是空的,__main__
只是一个简单的 print
语句。
我正在使用 python 3.5.1,但如果可以解决问题,我可以切换到 python 3.4
这是我的 setup.py
for win64
from cx_Freeze import setup, Executable
import sys
build_exe_options = {"packages": ['test1'],
"include_files": []
}
executables = [
Executable("__main__")
]
setup(
name = "Foo",
version = "0.1",
description = "Help please!",
author = "me",
options = {"build_exe": build_exe_options},
executables = executables
)
更新:
1- 请参阅下面的评论以了解此方法的解决方案
2- 切换到 pyinstaller 因为它可以生成一个 exe 文件而不是文件夹
冻结整个包没有意义,因为要创建可执行二进制文件,您需要一个 Python 脚本,该脚本可以 运行 独立 来自命令行。包通常不会启动 out-of-the-box 但会被另一个模块导入。
但是,您始终可以在脚本中导入包,这样当您冻结它时,该包就会包含在您的分发中。
所以做这样的事情:
test1/
__init__
__main__
run_test.py
run_test.py 现在导入 test1 并启动你的函数,它可以做任何你想做的事。
import test1
run_the_whole_thing()
注意:您需要将 setup.py 中的可执行文件更改为 run_test.py
。
所有 cx_Freeze 示例均针对一个文件(模块)。我需要为整个 python 包制作一个可执行文件。为什么这么难做?
这是我的目录:
test1/
__init__
__main__
我 运行 从命令行执行此操作的方法是使用以下 cmd
python -m test1
__init__
是空的,__main__
只是一个简单的 print
语句。
我正在使用 python 3.5.1,但如果可以解决问题,我可以切换到 python 3.4
这是我的 setup.py
for win64
from cx_Freeze import setup, Executable
import sys
build_exe_options = {"packages": ['test1'],
"include_files": []
}
executables = [
Executable("__main__")
]
setup(
name = "Foo",
version = "0.1",
description = "Help please!",
author = "me",
options = {"build_exe": build_exe_options},
executables = executables
)
更新: 1- 请参阅下面的评论以了解此方法的解决方案 2- 切换到 pyinstaller 因为它可以生成一个 exe 文件而不是文件夹
冻结整个包没有意义,因为要创建可执行二进制文件,您需要一个 Python 脚本,该脚本可以 运行 独立 来自命令行。包通常不会启动 out-of-the-box 但会被另一个模块导入。
但是,您始终可以在脚本中导入包,这样当您冻结它时,该包就会包含在您的分发中。
所以做这样的事情:
test1/
__init__
__main__
run_test.py
run_test.py 现在导入 test1 并启动你的函数,它可以做任何你想做的事。
import test1
run_the_whole_thing()
注意:您需要将 setup.py 中的可执行文件更改为 run_test.py
。