将15个Python脚本合并为一个可执行文件?
我整天都在这里和这里寻找解决方案:
我如何将多个.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...
如果这是您尝试合并这些脚本的方式,您将如何处理?
谢谢
-
您可以真正使用 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'], )