1使用pyinstaller打包流程
查看已安装的虚拟环境:conda env list
或者:conda info --envs
退出环境:conda deactivate
环境:
Python:3.6.13
PyInstaller: 4.10
1.1 普通工程项目
- 在python环境中安装pipenv模块:
pip install pipenv -i https://pypi.tuna.tsinghua.edu.cn/simple
- 新建一个文件夹env专门用来打包exe的应用程序,切换到新建的文件夹env的路径下面:
cd /usr/load/env
- 安装pipenv的虚拟环境:
pipenv install
执行完以后这个env的文件夹下面会多了两个文件,分别是Pipfile,Pipfile.lock:
-a--- 2022/1/8 星期六 19:02 307 Pipfile
-a--- 2022/1/8 星期六 19:02 3412 Pipfile.lock
- 进入虚拟环境:
pipenv shell
- 在虚拟环境中安装我们写好的python文件所需要的模块,例:
pip install pandas PyQt5
- 安装pyinstaller:
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
- 将main.py打包:
pyinstaller -F -w -i 图标.ico 我要打包的文件.py
(大项目建议使用-D)
1.2 包含YOLO,torch等项目
- 重新创建一个环境文件夹:
E:\Pyinstaller
- 在python环境中安装pipenv模块:
E:\Pyinstaller>pip install pipenv
pip install pipenv -i https://pypi.tuna.tsinghua.edu.cn/simple
安装成功:Successfully installed certifi-2022.9.24 distlib-0.3.6 filelock-3.8.0 pipenv-2022.9.24 platformdirs-2.5.2 virtualenv-20.16.5 virtualenv-clone-0.5.7
-
安装pipenv的虚拟环境:
pipenv install
执行完以后这个env的文件夹下面会多了两个文件,分别是Pipfile,Pipfile.lock:
-a--- 2022/1/8 星期六 19:02 307 Pipfile
-a--- 2022/1/8 星期六 19:02 3412 Pipfile.lock
安装成功显示:
Successfully created virtual environment! Virtualenv location: C:\Users\Administrator\.virtualenvs\Pyinstaller-JtCr4-V_
-
进入虚拟环境:
pipenv shell
-
再进入Pytorch环境:
conda activate pytorch
-
在虚拟环境中安装我们写好的python文件所需要的模块,例:
pip install pandas PyQt5
-
安装pyinstaller:
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
-
将main.py打包:
pyinstaller -D main.py
-
将
requirements.txt
文件复制到Pyinstaller\dist\main
路径 -
将YoloV5中的 models、utils、weights复制到
Pyinstaller\dist\main
路径 -
将
utils
文件夹下的__pycache__
中的_torch_utils.cpython-36.pyc
文件复制到utils目录下,并改名为torch_utils.pyc
例如我的:pyinstaller -D main.py -p delFile.py -p detect.py -p detection.py -p Pick_Frame.py --hidden-import delFile --hidden-import detect --hidden-import detection --hidden-import Pick_Frame
2 打包过程中出现得问题
2.1 闪退看不见黑框报错问题
使用管理员打开main.exe
2.2 ModuleNotFoundError No module named ‘torch’
存在没有安装的模块torch,安装命令:pip install torch
2.3 需要安装大量的模块
找到Yolo下的requirements.txt文件,安装需要的环境模块最低版本。
安装:pip install -r requirements.txt
2.4 requirements matplotlib>=3.2.2 not found and 1S required by YOLOv5, attempting auto-update.
明明已经安装好requirements所需要的版本,但始终报错:“未找到”
是torch环境安装的有问题,建议进入运行Yolo的原始环境进行打包就可以解决问题。
2.5 FileNotFoundError:[WinError3]系统找不到指定的路径。:'E:\Pyinstaller\dist\main\utils\torch_utils.pyc
将utils
文件夹下的__pycache__
中的_torchutils.cpython-36.pyc
文件复制到utils目录下,并改名为torch_utils.pyc
3 Pyinstaller指令说明
指令 | 说明 |
---|---|
-F, –onefile | 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用 |
-D, –onedir | 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护 |
-K, –tk | 在部署时包含 TCL/TK |
-a, –ascii | 不包含编码.在支持Unicode的python版本上默认包含所有的编码. |
-d, –debug | 产生debug版本的可执行文件 |
-w,–windowed,–noconsole | 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效) |
-c,–nowindowed,–console | 使用控制台子系统执行(默认)(只对Windows有效) |
-s,–strip | 可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用. |
-X, –upx | 如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note) |
-o DIR, –out=DIR | 设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源 |
-p DIR, –path=DIR | 设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源 |
–icon=<FILE.ICO> | 将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标 pyinstaller -i ico路径 xxxxx.py |
–icon=<FILE.EXE,N> | 将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效) |
-v FILE, –version=FILE | 将verfile作为可执行文件的版本资源(只对Windows系统有效) |
-n NAME, –name=NAME | 可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字 |