我最近一直在制作一款文本游戏(在控制台或CMD中执行)。我已经测试过了,效果很好。但现在我想让它成为一个单一的EXE。我已经在其他脚本中这样做了。问题是这款游戏实际上是由3个脚本组成:main.py,maps.py, ui .py。这些都导入到主文件中,像这样
import maps;
import UInterface as UI;
我能做些什么把所有的东西变成一个单一的exe并使它工作?重复,我的代码已经工作了,只需要编译
-
下载并安装- py2exe(链接在这里http://www.py2exe.org/)
-
像这样创建setup.py(在源目录中):
from distutils.core import setup import py2exe setup(console = ['main.py'])
-
然后运行为:
python setup.py py2exe
-
exe将在这里创建.distmain.exe
情况:
- 你有一个"主脚本"调用"其他脚本"(在相同的
简短的回答:
- 第一:你需要用py2exe编译主脚本。
-
Py2exe找不到您的"其他脚本"。要修复它,将代码复制到setup.py的开头部分(当然要修改main_script_dir)
import sys main_script_dir = "folder1\folder2\main.py" main_folder = main_script_dir.rsplit("\",1)[0] sys.path.append(main_folder)
它删除脚本的名称,并将文件夹添加到PYTHONPATH。
大回答:(关于如何得出结论的解释)
你怎么能测试py2exe找不到你的"其他脚本"?
- 运行py2exe与一个简单的。bat文件,内容cd命令查找Setup.py、运行命令和一个等待时间命令,它允许您读取控制台上的输出信息。
cd.. cd.. cd.. cd.. cd.. cd Folder1 cd Folder2 "C:Python27python.exe" setup.py py2exe >nul ping -n 30 localhost
- 你现在可以发现一个警告,像"以下模块似乎是(使用右键单击>查找如果你想)
为什么会发生?
- Py2exe查找类似于import函数的"其他脚本"(在已经导入的模块,主脚本文件夹pythonpath's目录等等)。但是,py2exe省略了主脚本文件夹(可能是bug)。这就是为什么拷贝不会有问题的原因例如,你在site-packages文件夹中的"other scripts"。
如何解决这个问题?
你必须将主脚本目录添加到pythonpath:
- (不推荐)如果你修改它与控制面板的变化将在程序关闭后保留。
(像这样:如何添加到windows 7中的pythonpath ?)
- (推荐)如果用代码修改(按照步骤)在上面的简短回答中详细说明),更改将仅保留直到程序关闭。
祝你好运!
我偶然发现这篇文章试图从一些独立的脚本创建一组可执行文件。最终,我通过将分配给控制台的所有脚本名称解决了这个问题。在文档中,console是要转换为控制台命令的脚本列表的关键字。
的例子:
setup(console=[
'script1.py',
'script2.py',
'script3.py'
]
)