15个Python脚本到一个可执行文件?

时间:2014-01-23 23:46:06

标签: python python-2.7 exe executable

我一整天都在修补这里和这里的解决方案:

How would I combine multiple .py files into one .exe with Py2Exe

Packaging multiple scripts in PyInstaller

但它不像我想象的那样工作。

我有一个程序,我在过去的6个月里一直在努力,我只是将其中一个功能发给了另一个用Python工作的开发人员。

我想要做的是使用他的脚本,而不必让用户下载和安装python。

我看到的问题是1个python脚本为各种任务调用其他14个python脚本。

所以我要问的是最好的方法是什么?

是否可以将15个脚本及其所有依赖项打包成1个我可以正常调用的exe文件?或者是否有另一种方法可以将初始脚本打包到exe中,而exe可以正常调用.py脚本?或者我应该只说f'它并在我的安装文件中包含一个python安装程序?

这适用于Python 2.7.6 btw

这就是初始脚本调用其他脚本的方式。

import printSub as ps
import arrayWorker as aw
import arrayBuilder as ab
import rootWorker as rw
import validateData as vd
etc...

如果你想要合并这些脚本,你会怎么做呢?

由于

2 个答案:

答案 0 :(得分:3)

你真的可以使用 py2exe ,它的行为方式就是你想要的。

查看上述问题的答案: How would I combine multiple .py files into one .exe with Py2Exe

通常,py2exe将您的主脚本捆绑到exe文件和所有相关脚本(它解析您的导入并找到所有必需的python文件)到库zip文件(仅限pyc文件)。它还收集相关的DLL库并将它们复制到分发目录,这样你就可以分发整个目录,用户可以从这个目录运行exe文件。好处是您可以使用大量脚本(较小的exe文件)来使用一个大型库zip文件和DLL。

或者,您可以配置py2exe将所有脚本和要求捆绑到1个独立的exe文件中。 Exe文件由主脚本,相关python文件和所有DLL组成。我在setup.py中使用这些选项来完成此任务:

setup( 
  ...
  options = {         
    'py2exe' : {
        'compressed': 2, 
        'optimize': 2,
        'bundle_files': 1,
        'excludes': excludes}
        },                   
  zipfile=None, 
  console = ["your_main_script.py"],
  ...
)

工作代码:

from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')
setup( 
  options = {         
    'py2exe' : {
        'compressed': 1, 
        'optimize': 2,
        'bundle_files': 3, #Options 1 & 2 do not work on a 64bit system
        'dist_dir': 'dist',  # Put .exe in dist/
        'xref': False,
        'skip_archive': False,
        'ascii': False,
        }
        },                   
  zipfile=None, 
  console = ['thisProject.py'],
)

答案 1 :(得分:0)

在setup.py之后(在源目录中):

from distutils.core import setup
import py2exe

setup(console = ['multiple.py'])

然后以:

运行
  python setup.py py2exe

对我来说很好。我没有提供任何其他选项来使其适用于多个脚本。