Python-创建一个EXE,它以编写的方式运行代码,而不是编译时的代码。

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (49)

我正在制作一个游戏程序,是设计成模块化的。我正在用文件main.py的pygame2exe构建一个exe,它基本上只是导入真正的主游戏并运行它。我希望的是一种从EXE执行Python脚本的启动程序,而不是包含所有不可变文件的单个程序。

做这件事最好的方法是什么?我尝试使用imp在运行时动态导入所有模块,而不是隐式导入它们,但这似乎破坏了对象继承。

提问于
用户回答回答于

去年夏天,我一直在努力解决同样的问题--从python脚本构建单个.exe。但是没有PyGames,但是有一个PyQt 5,它增加了一些问题。没有一个纯粹的标准工具帮了我。

最后,我用一个链子解决了这个问题:make+Py2exe+7Zip+ResourceHacker。这个集合给了我一个.exe,里面有所有的资源,这不需要安装-所以你可以把它放在任何地方的窗口框和运行。

用户回答回答于

经过一些实验,我找到了一个解决办法。

  1. 创建一个单独的文件夹source在应用程序的主文件夹中。这里将放置源文件。也放置文件__init__.py到文件夹里去。让我们将主文件命名为main_module.py
  2. 将其所有内容作为数据文件添加到py2exe配置中。
  3. 制造launcher.py-它的任务是导入所有的系统和所需的库,如pyGames,pyqt等等。然后运行你的程序: 导入sys、time、os、hashlib、atExit#std模块--导入PyQt 5、...#外部库sys.path.
  4. 现在main_module.py将被导入,如果它导入您的模块,它们也将被导入到它们在层次结构中的位置。例如,main_module.py可能是这样的: 用户调整_数据导入解析器 这些文件user_tweaks.pyuser_data.py应位于source相对于main_module.py

您可以更改source文件夹,无需重新编译程序本身。程序运行的任何时候都会使用source

因此,您有一个应用程序文件夹,其中包含:

  • 一个单独的启动程序-简单.exe文件
  • 所有所需模块
  • 您的应用程序及其所有模块。

扫码关注云+社区

领取腾讯云代金券