将python编译为单个.exe,为什么这么难?

时间:2016-10-30 15:42:17

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

我对编程很陌生。我最近使用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,程序无法运行。

所以,我带着两个问题来找你,无所不知,伟大的堆栈溢出。

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

并且:为什么这太难了?

1 个答案:

答案 0 :(得分:3)

这个问题已在这里得到解答: py2exe - generate single executable file

  

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