如何将 Python 3 控制台应用程序打包为 Windows 二进制文件?

Posted

技术标签:

【中文标题】如何将 Python 3 控制台应用程序打包为 Windows 二进制文件?【英文标题】:How to package a Python 3 console application as a windows binary? 【发布时间】:2018-01-10 22:06:41 【问题描述】:

我正在使用here 的帮助在 Python 中实现 LISP 解释器的 this 练习项目。我想为项目创建一个 exe 文件,执行它会启动一个 REPL。 我尝试使用 py2exe 和 pyInstaller,但是当我执行输出二进制文件时抛出错误,说这个脚本无法运行。 我的方法哪里出错了,我可以使用哪些替代方法? 谢谢。

【问题讨论】:

如果脚本正常运行(在其上调用Python),它应该从py2exe包运行。你做错了。也可以嵌入 Python;您可以查看 ***.com/questions/39539089/… 或 ***.com/questions/47942845/… 了解更多详细信息,但(两者都在 Win 上)但这几乎就是 py2exe 所做的。 【参考方案1】:

很难确定,但您是否检查过项目所需的所有依赖项是否与创建的可执行文件位于同一文件夹中或(至少)在您的路径中?

我知道(并使用)的另一个替代方法是 cx_Freeze。这个特定的 exe 构建器具有跨平台支持。

cx_Freeze 将尝试自动查找所有依赖的 python 模块并将它们包含在最终构建中。我想其他两个选项以相同的方式工作。无法自动定位的包和二进制依赖(如dll、sos)必须在构建配置脚本中明确指定。

我用于调试缺失依赖项的一种方法是手动将怀疑缺失的依赖项复制到与 .exe 相同的文件夹中,以查看它是否解决了问题。如果是,那么我将在构建配置脚本中指定它。

请参阅https://cx-freeze.readthedocs.io/en/latest/distutils.html 获取 cx_Freeze 文档,特别是标题为 build_exe 的部分。

这里是 cx_Freeze 的非繁琐 setup.py 的一个很好的例子:http://www.pythonexample.com/code/cx_freeze-setup/

【讨论】:

以上是关于如何将 Python 3 控制台应用程序打包为 Windows 二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从Python Tkinter应用程序中捕获任何输出到控制台?

将python程序打包后失败提示 failed to execute script xxx

如何从 Python Tkinter 应用程序捕获到控制台的任何输出?

用Pyinstaller把Python3.7程序打包成可执行文件exe

用Pyinstaller把Python3.7程序打包成可执行文件exe

将Python文件打包为exe文件,并在控制台运行之简易教程