如何用py2exe编译多个脚本?
我最近在做一个文本游戏(可以在控制台或命令提示符下运行)。我已经测试过了,运行得非常好。不过现在我想把它做成一个单独的EXE文件。我之前已经把其他脚本做成了EXE文件。现在的问题是,这个游戏实际上是由三个脚本组成的:main.py、maps.py和UInterface.py。这三个脚本都是在主文件中导入的,像这样:
import maps;
import UInterface as UI;
我该怎么做才能把所有东西合成一个EXE文件并让它正常工作?再说一遍,我的代码已经能正常运行,只需要编译成EXE。
3 个回答
0
我看到这个帖子是在尝试把一些独立的脚本做成一组可执行文件。最后,我通过把所有脚本的名字放到控制台里解决了这个问题。从文档中了解到,控制台是一个关键字,用来列出要转换成控制台可执行文件的脚本。
举个例子:
setup(console=[
'script1.py',
'script2.py',
'script3.py'
]
)
希望这能帮助到正在做同样事情的朋友们。
0
情况:
- 你有一个“主脚本”,它会调用你自己创建的“其他脚本”(这些脚本在同一个文件夹里或者在不同的包中)。
简短回答:
- 首先:你只需要用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找不到你的“其他脚本”?
- 用一个简单的.bat文件运行py2exe,这个文件里包含cd命令来找到setup.py,然后是运行命令,最后是一个等待命令,让你可以在控制台中查看输出信息。
cd.. cd.. cd.. cd.. cd.. cd Folder1 cd Folder2 "C:\Python27\python.exe" setup.py py2exe >nul ping -n 30 localhost
- 你现在可以看到一个警告,比如“以下模块似乎缺失”(如果需要,可以右键点击并查找)。
为什么会这样?
- py2exe寻找“其他脚本”的方式类似于import函数(在已经导入的模块、主脚本文件夹、pythonpath的目录等中)。但是,py2exe会忽略主脚本文件夹(这可能是个bug)。所以如果你把“其他脚本”复制到site-packages文件夹里,就不会有问题了。
你怎么解决这个问题?
你需要把主脚本的目录添加到pythonpath中:
- (不推荐)如果你通过控制面板修改,程序关闭后更改会保留。
(像这样:如何在Windows 7中添加到pythonpath?)
- (推荐)如果你通过代码修改(按照上面简短回答中的步骤),更改只会在程序运行期间保留。
祝你好运!
0
下载并安装 - py2exe(链接在这里 http://www.py2exe.org/)
在你的源代码目录下创建一个叫做 setup.py 的文件,内容如下:
from distutils.core import setup import py2exe setup(console = ['main.py'])
然后运行这个命令:
python setup.py py2exe
生成的exe文件会在这里找到 .\dist\main.exe