111.Python——基于pipenv打包PaddlePaddle的GUI项目
飞桨PaddlePaddle是百度的深度学习框架,用来做一些项目还是非常不错。但是打包就是一件非常麻烦的过程。在文中有讲过打包问题。29.Python程序打包成可执行文件——常见疑难问题解决办法。
本文是用pyinstaller来打包。由于开发环境安装很多三方库,相当于打包环境有些污染,所以这里使用pipenv来创建Python虚拟环境。保证干净的打包环境,也确保打包后的文件体积比较小。
安装配置启用pipenv
1、安装pipenv
>pip install pipenv
2、新建目录,命令行下切换到该目录下,安装虚拟环境
如在D盘目录下新建env目录。切换到env目录下,输入命令
env>pipenv install
3、进入虚拟环境
env>pipenv shell
其他命令:
pipenv install xx::安装python包
pipenv uninstall xx::卸载python包
pipenv shell:进入虚拟环境(项目目录下)
exit:退出虚拟环境
pipenv graph:显示包依赖关系
pipenv --venv:显示虚拟环境安装路径
安装项目运行环境
这里以可视化推理预测系统为例,系统介绍可以参看:48.1.基于Python+PyQt5的可视化推理预测系统。
本系统主要使用PaddlePaddle飞桨深度学习框架,UI设计使用的是PyQt5,模型训练使用的是PaddleX。
1、安装运行环境,库和相应的版本参看下面的requirements.txt文件内容
注意这几个库的版本会影响打包成功与否:
opencv-python==4.5.3.56,pandas==1.3.5,protobuf==3.19.0,pyinstaller==4.4,setuptools==53.0.0
altgraph==0.17.2
astor==0.8.1
Babel==2.10.3
bce-python-sdk==0.8.73
certifi==2022.6.15
chardet==5.0.0
charset-normalizer==2.1.0
click==8.1.3
colorama==0.4.5
cycler==0.11.0
decorator==5.1.1
et-xmlfile==1.1.0
filelock==3.7.1
Flask==2.1.2
Flask-Babel==2.0.0
Flask-Cors==3.0.10
fonttools==4.33.3
future==0.18.2
idna==3.3
importlib-metadata==4.12.0
itsdangerous==2.1.2
Jinja2==3.1.2
joblib==1.1.0
kiwisolver==1.4.3
lap==0.4.0
MarkupSafe==2.1.1
matplotlib==3.5.2
motmetrics==1.2.5
numpy==1.21.6
opencv-python==4.5.3.56
openpyxl==3.0.10
opt-einsum==3.3.0
packaging==21.3
paddle-bfloat==0.1.2
paddlepaddle==2.3.0
paddleslim==2.2.1
paddlex==2.1.0
pandas==1.3.5
pefile==2022.5.30
Pillow==9.2.0
protobuf==3.19.0
pycocotools==2.0.4
pycryptodome==3.15.0
pyinstaller==4.4
pyinstaller-hooks-contrib==2022.7
pyparsing==3.0.9
PyQt5==5.15.7
PyQt5-Qt5==5.15.2
PyQt5-sip==12.11.0
python-dateutil==2.8.2
pytz==2022.1
pywin32-ctypes==0.2.0
PyYAML==6.0
pyzmq==23.2.0
requests==2.28.1
scikit-learn==0.23.2
scipy==1.7.3
Shapely==1.8.2
six==1.16.0
threadpoolctl==3.1.0
tqdm==4.64.0
typing_extensions==4.3.0
urllib3==1.26.9
visualdl==2.3.0
Werkzeug==2.1.2
xmltodict==0.13.0
zipp==3.8.0
打包结果说明
项目打包后的大小为:189MB。体积已经算是比较小的。能成功脱离环境运行。
程序运行界面
在打包的过程中,可能还会有很多问题。本文只是提供一种成功的方法。如果有相同的问题,可以留言或私信。