Py2exe 令人困惑的错误

0 投票
1 回答
664 浏览
提问于 2025-04-17 17:33

我正在使用Python 2.4和适合我这个版本的py2exe。我要制作成可执行文件的文件都在Python 2.4文件夹里,和它的setup.py文件在同一个目录下。

当我在命令行中运行这个命令 c:\Python24\python.exe setup.py py2exe 时,命令行里出现了一堆文字,还有错误信息,像你在图片里看到的那样。缺少一些模块,文件无法变成可执行文件。我已经遇到这个问题很长时间了,不知道该怎么解决。我需要把我的程序做成可执行的。

有没有什么办法可以解决这个问题呢?

错误图片

补充:我尝试过更新的Python、Pygame和Py2exe版本(2.6、2.7、3.2),但都不行。总是出现这些错误 :S 我也试过cx_Freeze,结果也是一样 :/

1 个回答

0

经过几周的努力(其实我之前就遇到过这个问题),我很高兴地说我解决了这个问题! :)

问题的第一部分 (https://i.stack.imgur.com/WpkjR.png):

我通过编辑setup.py脚本,添加了“excludes”部分来解决这个问题。这样就成功生成了可执行文件!

修改后的setup.py脚本:

from distutils.core import setup
import py2exe
setup(windows=['source_static.py'], options={
          "py2exe": {
              "excludes": ["OpenGL.GL", "Numeric", "copyreg", "itertools.imap", "numpy", "pkg_resources", "queue", "winreg", "pygame.SRCALPHA", "pygame.sdlmain_osx"],
              }
          }
      )

所以,如果你也遇到类似的问题,只需把那些“缺失”的模块放到这个“excludes”行里。

第二部分:

在我成功生成可执行文件后,接下来又遇到了一个问题:应用程序请求运行时以不寻常的方式终止。请联系...。经过几天的搜索和思考,我终于找到了解决办法。我简直不敢相信这个问题是如此荒谬。问题出在我的代码中,具体是字体的定义:

font1 = pygame.font.SysFont(None, 13)

在把“None”改成某个系统字体名称(比如“Arial”,一定要用字符串表示)后,重新编译,我简直不敢相信我的.exe文件竟然能正常工作了!

font1 = pygame.font.SysFont("Arial", 13)

当然,你可以使用自己的字体,但必须指定它的路径并在程序中定义它。

所以对于所有遇到这些问题的朋友们,试试这些步骤,希望你们能成功。我真的希望这些能帮到你们,因为我花了好几天和几周的时间来解决这些问题。我甚至尝试过用所有版本的python和pygame,以及许多其他的.exe构建工具和setup脚本,但都没有成功。除了这些问题,我之前还有很多其他问题,但我在stackoverflow.com上找到了答案。

我很高兴能找到解决这些问题的方法,也希望能帮助到你们,如果你们遇到同样的问题。

小建议(我也做过的事情):

第一:更新你的Microsoft Visual C++库到最新版本。

第二:如果你的可执行程序需要图片或字体,记得把它们放到dist文件夹里(也就是你创建.exe文件的地方)。

第三:在制作.exe文件时,把所有需要的文件放到setup.py脚本所在的文件夹里(也就是你的主脚本使用的所有文件和目录)。

使用了Python 2.7 x64pygamepy2exe

撰写回答