如何用py2exe编译多个脚本?

0 投票
3 回答
5957 浏览
提问于 2025-04-18 16:25

我最近在做一个文本游戏(可以在控制台或命令提示符下运行)。我已经测试过了,运行得非常好。不过现在我想把它做成一个单独的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
  1. 下载并安装 - py2exe(链接在这里 http://www.py2exe.org/

  2. 在你的源代码目录下创建一个叫做 setup.py 的文件,内容如下:

    from distutils.core import setup
    import py2exe
    
    setup(console = ['main.py'])
    
  3. 然后运行这个命令:

    python setup.py py2exe
    
  4. 生成的exe文件会在这里找到 .\dist\main.exe

撰写回答