我一整天都在修补这里和这里的解决方案:
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...
如果你想要合并这些脚本,你会怎么做呢?
由于
答案 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
对我来说很好。我没有提供任何其他选项来使其适用于多个脚本。