将15个Python脚本合并为一个可执行文件?

发布于 2021-01-29 16:56:18

我整天都在这里和这里寻找解决方案:

我如何将多个.py文件与Py2Exe合并为一个.exe

在PyInstaller中打包多个脚本

但它并不是我认为的那样有效。

我有一个程序在过去6个月中一直在工作,我只是将其功能的一部分提供给了另一位在Python中工作的开发人员。

我想做的是使用他的脚本,而无需用户下载和安装python。

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

所以我要问的是解决此问题的最佳方法是什么?

是否可以将15个脚本及其所有依赖项打包到我可以正常调用的1个exe中?还是有另一种方法可以将初始脚本打包到exe中,并且该exe可以正常调用.py脚本?还是我应该说f’it,并在安装文件中包含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...

如果这是您尝试合并这些脚本的方式,您将如何处理?

谢谢

关注者
0
被浏览
159
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以真正使用 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'],
    )
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看