赞
踩
使用pyinstaller将含有多个py文件的工程打包成一个exe文件
# -*- mode: python -*- block_cipher = None a = Analysis(['main.py', 'utilsDigits.py', 'utilsLine.py', #此处写需要封装的多个.py文件,如果.py文件与.spec不在同一个文件下,则需在.py文件前添加路径 'config.py'], pathex = ['C:\\Users\\admin\\Desktop\\chishui'], binaries = [('D:\\Anaconda3\\envs\\tensorflow\\python.exe','bin')],#此处放置的是代码运行时,所调用的依赖,如OpenCV、tensorflow等 datas = [('C:\\Users\\admin\\Desktop\\chishui\\004.mp4','.')],#此处放置的是代码运行时所调用的数据文件 hiddenimports = [], hookspath = [], runtime_hooks = [], excludes = [], win_no_prefer_redirects = False, win_private_assemblies = False, cipher = block_cipher) pyz = PYZ(a.pure, a.zipped_data,cipher = block_cipher) exe = EXE(pyz, a.scripts, exclude_binaries = True, name = 'main', debug = False, strip = False, upx = True, console = True ) coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip = False, upx = True, name = 'main')
Analysis:元组中放置的是需要封装的多个python文件,python文件要放置在第一个列表中,若spec文件与需要封装的python文件不在同一个目录中,还需在数组的python文件前添加详细目录;
pathex:路径写环境变量,也就是你需要封装的工程的路径;
binaries:这个列表的路径放置的是你代码运行时。所调用的环境或者依赖,例如你配置的OpenCV、tensorflow等;如果不需要调用这些依赖,空列表也可以运行;
datas:这个列表中放置的是代码运行时调用的数据的路径,列表中第一个引号中放置数据路径,第二个引号写数据类型;如下:
数据书写格式如下:
datas =
[('C:\\Users\\admin\\Desktop\\chishui\\004.mp4','.')]
3.生成exe文件
首先,需在pycharm环境中安装pyinstaller插件,打开cmd,将路径调至.spec文件的目录下,输入以下代码
pyinstaller -D xxx.spec
xxx是由自己设置spec文件的名字;
运行结束后生成dist文件夹,在文件夹中找到xxx.exe文件运行,即可。
3.1封装单个py文件执行代码
pyinstaller -F xxx.py
4.生成exe文件后需注意的问题
运行exe文件后只出现命令提示框,没有运行结果,可能的原因调用的代码或文件不再同一个文件夹下,由于生成的exe文件和调用的依赖和数据在同一个文件夹下,但代码中可能有文件夹目录,但exe找不到文件夹,调用不到数据。
解决方法:在python代码中调用数据的地址目录删除,只留数据名称,同时,还需将数据与python代码放置在同一文件夹下。
5.总结
以上是我自己在打包多个python文件时,所遇到的一些问题,可能有些专业名词说得不太对,还望大家见谅!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。