码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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/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 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    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
    
    • 1
    • 2
    • 3
    • 4

    详细的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)
    .......
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    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
    
    • 1
    • 2

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

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

  • 相关阅读:
    Pytorch的入门操作(二)
    SVN创建分支
    反渗透水处理成套设备有哪些
    FFmpeg的makefile逻辑分析
    用HFSS仿真平面线圈的电感量
    JavaScript中的this
    有了“黑盒”测试为什么还要“白盒”测试? 由于单元测试要写测试驱动程序,非常麻烦,能否等到整个系统全部开发完后,再集中精力进行一次性地单元测试呢?等问题
    net-tools 和 iproute2 笔记221103
    ArduPilot开源飞控之AP_Relay
    什么是数字孪生?数字孪生技术有没有真正的实用价值?
  • 原文地址:https://blog.csdn.net/a554521655/article/details/134020543
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号