python 虚拟环境搭建、打包成exe发布和所遇到的问题汇总
文章目录
- python 虚拟环境搭建、打包成exe发布和所遇到的问题汇总
- 1.项目用到的软件
- 2.python虚拟环境安装
- 3.问题和解决:
- 3.1使用pyinstaller编译文件为exe产生1.WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp\_MEI132522\torch\_C_
- 3.2.FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Administrator\\AppData\\Local\\Temp\\_MEI126282\\easyocr\\character\\ch_sim_char.txt'
- 3.3PyInstaller编译程序报错:
- 3.4pyinstaller生成exe后运行太慢
- 3.5在使用图片识别库easyocr时报错cv2.error: Unknown C++ exception from OpenCV code#
- 4.带easyocr功能打包exe步骤(以下如有更好的方案,请大家留意,谢谢)
- 4.1执行
- 4.2生产\dist\main
- 4.3拷贝imageio和easyocr
- 4.4拷贝.EasyOCR/modle
- 4.5打包发布
- 4.6使用
- 4.7启动
- 4.8激活
1.项目用到的软件
python3.7
Pycharm_Professional_2021.2.1_Protable
2.python虚拟环境安装
2.1 安装pip
先下载pip-22.2.2.tar.gz源码,解压后cd pip-22.2.2
py.exe setup.py install pip设置源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple2.2 安装pipenv
pip install pipenv2.3 在指定目录激活虚拟环境,
在D盘创建虚拟环境目录Python_ENV,然后cd到该目录
#创建虚拟环境 pipenv install
D:\Python_ENV>pipenv install
#查看虚拟环境所在目录
(Python_ENV-iU3StqtP) D:\Python_ENV>pipenv --where
D:\Python_ENV
#激活虚拟环境 pipenv install
D:\Python_ENV>pipenv shell
Launching subshell in virtual environment...
Microsoft Windows [版本 10.0.22000.978]
(c) Microsoft Corporation。保留所有权利。2.4 虚拟环境中安装项目所需包
#qt
(bo-flwsr0G4) (base) C:\Users\bo>pip install PyQt5(bo-flwsr0G4) (base) C:\Users\bo>pip install Pillow(bo-flwsr0G4) (base) C:\Users\bo>pip install pycryptodome(bo-flwsr0G4) (base) C:\Users\bo>pip install pypiwin32
(bo-flwsr0G4) (base) C:\Users\bo>pip install wmi
(bo-flwsr0G4) (base) C:\Users\bo>pip install pyyaml
(bo-flwsr0G4) (base) C:\Users\bo>pip install coloredlogs
(bo-flwsr0G4) (base) C:\Users\bo>pip install pymysql
#工具
(bo-flwsr0G4) (base) C:\Users\bo>pip install PyQt5-tools
鼠标点击
(bo-flwsr0G4) (base) C:\Users\bo>pip install pymouse#安装打包软件
关键点就一个:也要在虚拟环境里安装pyinstaller
(bo-flwsr0G4) (base) C:\Users\bo>pip install pyinstaller#安装easyocr
pip install easyocr -i http://pypi.mirrors.ustc.edu.cn/simple --trusted-host pypi.mirrors.ustc.edu.cn如果出现:在使用图片识别库easyocr时报错cv2.error: Unknown C++ exception from OpenCV code.
原因:就是opencv的版本太高了,python版本低导致的。
解决方案:虚拟环境中 重新导入opencv
pip install opencv-python==4.1.2.30 -i https://pypi.tuna.tsinghua.edu.cn/simple#查看安装的包
(bo-flwsr0G4) (base) C:\Users\bo>pip list2.5 打包exe在pycharm终端中执行cmd:pyinstaller -D main.py --console --icon=favicon.ico --hidden-import easyocr -p
3.问题和解决:
3.1使用pyinstaller编译文件为exe产生1.WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp_MEI132522\torch_C_
解决方案:main.spec
找到*.spec配置文件,打开该文件中加入以下代码:
for d in a.datas:if '_C.cp37-win_amd64.pyd' in d[0]:a.datas.remove(d)break
详细的main.spec配置文件的内容如下:
......
a = Analysis(['main.py'],pathex=[],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)#加入的代码部分start
for d in a.datas:if '_C.cp37-win_amd64.pyd' in d[0]:a.datas.remove(d)break
#加入的代码部分endpyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)
.......
3.2.FileNotFoundError: [Errno 2] No such file or directory: ‘C:\Users\Administrator\AppData\Local\Temp\_MEI126282\easyocr\character\ch_sim_char.txt’
解決:打包命令后边加入 --collect-all easyocr 选项
pyinstaller -F --onefile main.spec --collect-all easyocr --noconsole --icon=favicon.ico
3.3PyInstaller编译程序报错:
INFO: UPX is not available.
原因:pyinstaller使用UPX压缩,
解决办法:安装UPX,然后再运行打包exe命令即可(会提示UPX is available了)
下载UPX->解压得到 upx.exe文件->拷贝到pyinstaller目录下
UPX地址:https://github.com/upx/upx/releases/tag/v3.96
3.4pyinstaller生成exe后运行太慢
pyinstaller打包时,使用-D替代-F选项。
-D:生成一个文件夹,里面是多文件模式,启动快
-F:仅仅生成一个文件,不暴露其他信息,启动较慢
3.5在使用图片识别库easyocr时报错cv2.error: Unknown C++ exception from OpenCV code#
原因:就是opencv的版本太高了,python版本低导致的。
解决方案:虚拟环境中 重新导入opencv
pip install opencv-python==4.1.2.30 -i https://pypi.tuna.tsinghua.edu.cn/simple
4.带easyocr功能打包exe步骤(以下如有更好的方案,请大家留意,谢谢)
4.1执行
pyinstaller -D main.py --console --icon=favicon.ico --hidden-import easyocr -p C:\Users\15129\.virtualenvs\system32-zwnXhztR\Lib\site-pac
kages
4.2生产\dist\main
4.3拷贝imageio和easyocr
C:\Users\15129.virtualenvs\system32-zwnXhztR\Lib\site-packages
下的imageio和easyocr 替换 \dist\main 的
4.4拷贝.EasyOCR/modle
将screenShot-register下的.EasyOCR拷贝到main
原因:.EasyOCR模型训文件,easyocr程序会从C:\Users\yourname\目录下读取该模型。但pyinstaller打包exe时不会打包进去,所以这里需要自行拷贝,以便后边使用时再拷贝到C:\Users\yourname\下 。
4.5打包发布
使用压缩工作main.zip
4.6使用
解压main.zip
将main下的.EasyOCR 拷贝C:\Users\yourname\下
4.7启动
点击main/mian.exe
4.8激活
如软件做了注册功能,请将弹窗中注册码复制给软件发行商,激活