python 虚拟环境搭建、打包成exe发布和所遇到的问题汇总

python 虚拟环境搭建、打包成exe发布和所遇到的问题汇总

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/simple

2.2 安装pipenv
pip install pipenv

2.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 list


2.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
#加入的代码部分end

pyz = 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激活

如软件做了注册功能,请将弹窗中注册码复制给软件发行商,激活

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python是一种非常流行的编程语言,因其易于学习和使用,被广泛应用于各种应用程序的开发。当我们将Python应用程序打包可执行文件时,有时会出现一些问题,例如,与其他Python程序的不兼容性或特定库的依赖性等。为了解决这些问题,我们可以使用虚拟环境。 虚拟环境是Python的一种隔离机制,它允许我们在同一机器上运行多个Python环境,每个环境都有自己的Python解释器和安装的库。由于每个环境都是独立的,因此我们可以在其中安装不同版本的Python和库,这是很有用的,特别是当我们需要在不同的项目中使用不同的Python和库时。 要在虚拟环境中打包Python应用程序,我们需要按照以下步骤操作: 1.首先,在命令行中使用命令“pip”安装Virtualenv。 2.创建一个名为“myenv”的虚拟环境,可以使用命令“virtualenv myenv”。 3.激活虚拟环境,可以使用命令“source myenv/bin/activate”(Linux/MacOS)或“myenv\Scripts\activate”(Windows)。 4.在虚拟环境中安装所需的Python库、模块和依赖项,可以使用命令“pip install”。 5.使用PyInstaller等工具将Python应用程序打包.exe文件。 使用虚拟环境打包Python应用程序可以大大简化应用程序的分发和安装过程,同时确保应用程序可以在不同的机器上运行,而不受不同Python和库版本的影响。这是Python开发中的一个非常有用的技巧,应该掌握并善于应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心之雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值