如何使用py2exe编译多个脚本



我最近一直在制作一款文本游戏(在控制台或CMD中执行)。我已经测试过了,效果很好。但现在我想让它成为一个单一的EXE。我已经在其他脚本中这样做了。问题是这款游戏实际上是由3个脚本组成:main.py,maps.py, ui .py。这些都导入到主文件中,像这样

   import maps;
   import UInterface as UI;

我能做些什么把所有的东西变成一个单一的exe并使它工作?重复,我的代码已经工作了,只需要编译

  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将在这里创建.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'
    ]
)

最新更新