【问题标题】:Compiling python to a single .exe, why is this so difficult? [duplicate]将python编译为单个.exe,为什么这么难? [复制]
【发布时间】:2017-03-12 20:39:37
【问题描述】:

我对编程很陌生。我最近使用 python 和 pygame 做了一个简单的蛇游戏。当然,我可以通过运行 .py 脚本轻松地玩我的游戏,但是为了与我不太懂电脑的朋友分享它,我继续尝试弄清楚如何将我的代码编译成单个 .exe 来制作它对他们来说很容易。

我已经尝试过 py2exe 和 cx_Freeze,它们都给了我一个带有 .exe 和其他几个文件(依赖项)的 dist 或 build 目录。这确实有效,因为我可以压缩整个文件夹并通过 .zip 进行分发,但这不是 理想。我希望能够将它们全部包装在一个文件中。

所以我开始在谷歌上搜索“如何将 python 编译成单个 exe”。然而,与我之前尝试过的许多编程问题不同,我无法得到一个直接、可靠的答案。到目前为止,我尝试过的最新可靠答案给了我这个 setup.py 脚本:

from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')

setup(
        options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
        windows = ['snek.py'],
        zipfile = None
        )

# Python 3.4.4, py2exe 0.9.2.2; modules used: pygame, random

不过,它给了我一个完整的文件夹,而不是一个 .exe,没有它程序就无法运行。

所以,我来找你,无所不知,伟大的 stackoverflow,有两个问题。

以防万一我错过了什么:建议我如何实现我的单一 .exe 梦想?

还有:这到底为什么这么难?

【问题讨论】:

  • 你试过 Nuitka 了吗?
  • Python 不是为了编译成 .exe 文件而创建的,而且很多人仍然不需要 .exe 文件,所以它仍然很复杂。顺便提一句。 py2exe(和类似的)创建扩展名为 .exe 的自解压 .zip 文件,而不是真正的 .exe 文件(就像 C/C++ 编译器一样)。

标签: python python-3.x compilation pygame py2exe


【解决方案1】:

这里已经回答了这个问题: py2exe - generate single executable file

PyInstaller 将创建一个没有依赖关系的单个 .exe 文件;使用 --onefile 选项。它通过将所有需要的共享库打包到可执行文件中,并在运行之前将它们解包,就像您描述的那样(编辑:py2exe 也具有此功能,请参阅 minty 的答案)

【讨论】:

  • 是的,这些是我之前尝试过的答案。用户 Minty 的答案实际上是我当前的“解决方案”,正如我的问题一样(我使用的是相同的代码!)
猜你喜欢
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多