每当我使用cx_Freeze和Python构建一个exe时,我会得到一些额外的东西,比如Library.zip和所有的.dll文件。有没有办法可以让它只是一个可执行文件,我可以发送给某人并让他们运行而不必给他们所有额外的文件呢? Python 3.4。谢谢!
答案 0 :(得分:1)
不是真的 1 。您是单文件分发的最佳选择可能是创建installer。
然而,您可以将library.zip附加到您的可执行文件:
params['options'] = {
'append_script_to_exe': True,
'create_shared_zip': False,
...
}
setup(**params)
但这只会将文件数减少1.
有两个原因导致你无法做到这一点。第一个是某些模块不是“zip安全”(那些包含用open()
读取的数据文件的模块)。第二个也是更重要的原因是,Python需要各种DLL才能运行,而Windows的动态链接器如果在zip文件中,则不知道如何查找和加载这些DLL。
请参阅:http://cx-freeze.readthedocs.org/en/latest/faq.html#single-file-executables
1 如果你真的很有抱负,理论上你可以创建一个完全静态的Python构建(静态链接所有的库源代码和C运行时等),和对您可能正在使用的任何C模块执行相同操作。将该Library.zip文件附加到exe上可能会为您提供单文件分发。
但是,跟踪并构建所有这些依赖项将是非常大的工作。
答案 1 :(得分:1)
是的,如果您在Windows上使用此方法。
运行 - >> IExpress程序
按照说明操作。
这会将所有文件编译到exe上,但首先需要使用cx_freeze创建exe,然后浏览到iexpress中的目录,它将完成其余的工作。