我不认为pyinstaller可以独自处理这种捆绑,至少我没有设法进行配置。我也有一个相当大的应用程序,其中有些调用
subprocess.Popen(’python’…)
完成。我最终使其工作的方式是:
- 将子流程调用修改为其他python,例如
subprocess.call(['gksudo','./python script2.py'])
。在您的情况下,请创建两个单独的分析,一个用于入口点,另一个用于其余脚本:
a1-对script1.py的分析a2-对script2.py的分析
仅从入口点脚本创建exe:
pyz = PYZ(a1.pure)
exe = EXE(pyz,
a1.scripts,
exclude_binaries=1,
name={name here},
debug=False,
strip=False,
upx=True,
console=1 )从所有脚本收集
coll = COLLECT( exe, a1.binaries, a1.zipfiles, a1.datas, a2.binaries, a2.zipfiles, a2.datas,
python_tree,
*additional_trees,
strip=False,
upx=True,
name={})将python复制到所有子进程调用中指定的位置的发行版中,并安装pyinstaller找不到的任何其他要求(我有一些类似matplotlib,pylab等)
创建一个启动脚本,该脚本首先更改所有必需的环境变量以指向您的程序包,然后启动该应用程序。就我而言,需要的是从调用目录:
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
export LD_RUN_PATH=
pwd
:$LD_RUN_PATH
现在,如果我希望该应用程序在未安装python的计算机上运行,或者如果它们已安装python的计算机上运行,则所有这些都是必需的,请确保该应用程序仍使用分发包中的所有库而不是任何本地库。如果在您的情况下,python已经安装在目标计算机上,那么我认为不需要这样做,前三步就足够了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)