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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/117317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XTU-OJ 1150-n!进制

题目描述 n!进制是指每i位的权值是(i1)!,每一位的系数为0~i1。 比如n!进制的21 2*2! 1*1! 5。给你一个10进制数,求其n!进制的值。 输入 每行一个10进制的整数n,0≤n≤3,628,799。 输出 每行输出一个样例的结果。 样例输入 0 1 10 100 3628799样例输出…

依靠继承与聚合,实现maven搭建分布式项目

简介聚合 对于复杂的Maven项目,一般建议采用多模块的方式来设计开发,便于后期维护管理。但是构建项目时,如果每次都需要按模块一个一个进行构建会十分麻烦,而Maven的聚合功能就可以很好的解决这个问题,当用户对聚合模…

OpenCV官方教程中文版 —— 直方图的计算,绘制与分析

OpenCV官方教程中文版 —— 直方图的计算,绘制与分析 前言一、原理1.统计直方图2. 绘制直方图3. 使用掩模 前言 • 使用 OpenCV 或 Numpy 函数计算直方图 • 使用 Opencv 或者 Matplotlib 函数绘制直方图 • 将要学习的函数有:cv2.calcHist()&#xf…

导入自己的jacoco exec文件到IDEA并进行展示

哈喽各位,许久没写过文章了,今天更新一篇将自己本地的jacoco exec文件导入到IDEA中并展示 jacoco是一个用来分析代码覆盖率的三方工具,并且IDEA中也集成了该功能,可以在IDEA中直接生成jacoco覆盖率,但如果我们有一个现…

Java线程中sleep()、wait()、yield()、join()方法的使用

1.sleep() sleep(): sleep 方法属于 Thread 类,该行为中线程不会释放锁,只阻塞线程,让出cpu给其他线程,当达到指定的时间后会自动恢复运行状态继续运行。 2.wait() wait(): 该方法属于 Object 类,在这个过程里线程会…

Linux命令(104)之date

linux命令之date 1.date介绍 linux命令date用来设置和显示系统日期和时间 2.date用法 date [参数] date参数 参数说明-s修改并设置时间-d可以显示以前和未来的时间%H小时%M分钟%S秒%X等价于%H %M %S%F显示当前所有时间属性%Y完整年份%m月%d日%A星期的全称 3.实例 3.1.当前…

在自己的服务器上部署个人博客和开源项目:实现数字存在感

在数字时代,拥有自己的服务器不再是一项难以实现的任务。通过云计算和开源技术的广泛应用,个人可以轻松地拥有自己的服务器,并在其上部署个人博客以及开源项目,为自己在互联网上创造一个数字存在感。本文将介绍如何在自己的服务器…

重装win11,个人记录详细步骤-干货

重装win11,个人记录详细步骤-干货 下载镜像-windows官网 https://www.microsoft.com/zh-cn/software-download/windows11%20 安装的选这个就行 虽然他这里写的是家庭版,进去里面就可以选择其他版本 重装win11有个前提 系统最低要求 本文列出了 Windo…

13.4web自动化测试(Selenium3+Java)

一.定义 用来做web自动化测试的框架. 二.特点 1.支持各种浏览器. 2.支持各种平台(操作系统). 3.支持各种编程语言. 4.有丰富的api. 三.工作原理 四.搭环境 1.对照Chrome浏览器版本号,下载ChromeDriver,配置环境变量,我直接把.exe文件放在了jdk安装路径的bin文件夹下了(j…

FFmpeg编译安装(windows环境)以及在vs2022中调用

文章目录 下载源码环境准备下载msys换源下载依赖源码位置 开始编译编译x264编译ffmpeg 在VS2022写cpp调用ffmpeg 下载源码 直接在官网下载压缩包 这个应该是目前(2023/10/24)最新的一个版本。下载之后是这个样子: 我打算添加外部依赖x264&a…

说一说ajax的请求过程?

AJAX(Asynchronous JavaScript and XML)是一种通过在后台与服务器进行异步通信的技术,用于实现页面的局部更新和动态加载数据。下面是 AJAX 请求的一般过程: 1:创建 XMLHttpRequest 对象:在 JavaScript 中…

12、Python -- if 分支 的讲解和使用

目录 程序结构顺序结构分支结构分支结构注意点不要忘记冒号 if条件的类型if条件的逻辑错误if表达式pass语句 程序流程 分支结构 分支结构的注意点 if条件的类型 if语句的逻辑错误 if表达式 程序结构 Python同样提供了现代编程语言都支持的三种流程 顺序结构 分支结构 循环结构…

Unity DOTS系列之Filter Baking Output与Prefab In Baking核心分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Baking核心机制,方便大家上手学习掌握Unity DOTS开发。今天给大家分享的Baking机制中的Filter Baking Output与Prefab In Baking。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础…

SQL Delete 语句(删除表中的记录)

SQL DELETE 语句 DELETE语句用于删除表中现有记录。 SQL DELETE 语法 DELETE FROM table_name WHERE condition; 请注意删除表格中的记录时要小心!注意SQL DELETE 语句中的 WHERE 子句! WHERE子句指定需要删除哪些记录。如果省略了WHERE子句&#xff…

【数据结构】数组和字符串(二):特殊矩阵的压缩存储:对角矩阵——一维数组

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储结构体初始化元素设置元素获取打印矩阵主函数输出结果代码整合 4.2.1 矩阵的数组表示 【数据结构】数组和字符串(一):矩阵的数组表示 4.2.2 特殊矩阵的压缩存储…

Elasticsearch配置文件

一 前言 在elasticsearch\config目录下,有三个核心的配置文件: elasticsearch.yml,es相关的配置。jvm.options,Java jvm相关参数的配置。log4j2.properties,日志相关的配置,因为es采用了log4j的日志框架。这里以elasticsearch6.5.4版本为例,并且由于版本不同,配置也不…

UG\NX二次开发 实现“适合窗口”的功能

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 shsjdj 订阅本专栏,非常感谢。 简介 实现“适合窗口”的功能 效果 代码1 #include "me.hpp"extern DllExport void ufusr(char* param, int* re…

【数据结构与算法】二叉树的综合运用

目录 一,层序遍历算法 1-1,队列结构的设立 1-2,逻辑分析 二,判断单值二叉树 三,求二叉树的最大深度 一,层序遍历算法 二叉树的层序遍历是一层一层的从左到右遍历,现在问题是二叉树不支持随…

我们距离“裸眼3D自由”,还有多远?

还记得2018年,我曾熬夜好几天,就为了抢一张故宫博物院“清明上河图互动艺术展演”的门票。 后来,我也曾去过很多城市,看过不少策划精良的展览。那场“穿越北宋”的名画之旅,依然是我看过的,最具沉浸感的一场…

【Linux】kill 命令使用

经常用kill -9 XXX 。一直在kill,除了kill -9 -15 ,还能做什么?今天咱们一起学习一下。 kill 命令用于删除执行中的程序或工作。 kill命令 -Linux手册页 命令选项及作用 执行令 man kill 执行命令结果 参数 -l 信号,若果…