Pygame分布 - 运行时错误

时间:2012-01-26 12:26:01

标签: python runtime pygame py2exe

我正在研究使用模块pygame用Python编程的2D街机游戏2天的问题,我找不到解决方案。

问题是:我想创建一个正确运行程序的Windows可执行文件。我已经设法创建了一个.exe文件,但是一旦启动exe我就会收到错误:

Runtime Error!
Path\MyGame.exe
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

我尝试使用每个模块创建.exe文件,以便轻松构建一个模块,例如cx_freezepy2exepyinstaller。最后,无论我使用哪一个,都有同样的错误。我已经尝试用另一台PC启动.exe文件,但它失败了。更新了我的Microsoft Visual C ++ Redistributable,没有任何帮助。

所以故障必须在我的代码中的某个地方。该程序运行正常,但必须有一些东西阻止我使.exe文件正常工作。

代码有大约1000行,我知道要求有人检查整个代码太多了但是我希望有人有类似的问题,或者有一些提示,为什么会出现这个错误并且可以帮助我。

您可以找到the code here

3 个答案:

答案 0 :(得分:4)

问题不在于您的代码,问题在于您如何生成.exe。用pygame做这件事是一个真正的婊子,但有一些黑客和谷歌你可以做到。

这应该让你开始:http://pygame.org/wiki/Pygame2exe

答案 1 :(得分:3)

也有类似的问题。找到了解决问题的方法:

几周后(甚至在此之前出现此问题)我很高兴地说我解决了这个问题! :)

我的问题的第一部分http://i.stack.imgur.com/WpkjR.png): 我通过编辑setup.py脚本并在其中添加“排除”部分来解决它。这导致成功制作了可执行文件!

修改了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"],
              }
          }
      )

因此,如果您遇到类似问题,只需将这些“缺失”模块放入此“排除”行。

第二部分:

在我成功制作可执行文件之后,我遇到了下一个问题:应用程序已请求Runtime以异常方式终止它。请联系...... 。经过几天的搜索和思考如何解决这个问题,我找到了一种方法。我简直不敢相信这个问题太荒谬了。问题出在我的代码中,字体定义为:

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

将“”更改为某些系统字体名称(例如“Arial”(必须是字符串))和编译后,我无法相信我的.exe文件有效!

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

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

因此,对于遇到此问题的所有人,请尝试以下步骤,我希望您能成功。 我真的希望这会对你有所帮助,因为我已经失去了几天和几周试图解决这些问题。我甚至尝试使用所有版本的python和pygame制作我的.exe文件,以及许多其他.exe构建器和设置脚本,但没有运气。除了这些问题,我之前还有很多其他问题,但我在stackoverflow.com上找到了答案。

我很高兴我找到了解决这些问题的方法,如果你遇到同样的问题,可以帮助你。

小提示(我也做过的事情):

  
    

1st:将Microsoft Visual C ++库更新为最新版本。

         

第二:如果您的图像或字体与您的可执行程序需要的相似,请将它们包含在 dist 文件夹(已创建.exe文件的位置)中。

         

第三:当您制作.exe文件时,请将所有需要的文件包含在您的setup.py脚本所在的文件夹中(主脚本使用的所有文件和目录)。

  

使用 Python 2.7 x64 pygame py2exe

答案 2 :(得分:1)

有同样的问题,通过将pygame的默认字体文件放在分发文件夹中来解决它。它在项目中使用,我认为它会自动包含在构建中。