前言

不知道大家用pyinstaller打包时候是否经常出现各种找不到依耐的抱错,在调试时候正常,一打包就嗝屁了。今天就针对pyinstaller踩坑过程来简短总结一下。

首先我这里使用的是python3.9 + pycharm环境进行开发的,当然其它的也可以,我更建议也使用pycharm。

在进行打包之前需要先了解虚拟环境和全局环境,可能你在调试的时候是使用的虚拟环境,但是打包的时候又使用了全局环境,这样一来两个环境的库不是相互包含的也是出现找不到模块的原因之一。

搭建虚拟环境:

在pycharm工程创建之初选择虚拟模式:

或者在已有工程的File-Settings-Project:xxx -Python Interpreter下进行配置:

再或者,你如果是其他平台,可以使用命令完成:

先安装虚拟环境管理器(暂且这样称呼):

pip install virtualenv

(此命令的运行路径是任意的)。

随后到需要创建虚拟环境的位置执行virtualenv xxx (xxx为要创建的虚拟环境名字)进行虚拟环境的创建:

virtualenv  test_venv

比如我在E:\PY创建名为test_venv的虚拟环境:

此时可以看到文件夹被创建:

随后cd切换到E:\PY\test_venv\Scripts目录下执行:

activate

测试:

发现路径前面跟了虚拟环境的名字证明环境被激活。

使用pip list可以看到当前环境下安装的包。
使用虚拟环境的好处是不同的项目可以有不同的环境,也方便管理,和迁移。

在虚拟环境下打包:

为了避免打包过大,建议使用虚拟环境打包。需要注意的是,要在虚拟环境下安装pyinstaller,使用虚拟环境的pyinstaller。

好了,你现在已经学会怎样搭建虚拟环境了,那么现在在实际项目中试一下吧:

Ohhhhhh ...  血压上来了有木有,但是经过一番查阅后总结了以下方法:

管理员运行PowerShell 执行set-ExecutionPolicy RemoteSigned再输入y回车:(解决vscode运行python时,提示无法加载文件xxx\.venv\Scripts\activate.ps1,未对文件进行数字签名,因为在此系统上禁止运行脚本。_ListenableFuture的博客-CSDN博客)

再去项目虚拟环境下执行activate:

在路径前面出现虚拟环境名字表示成功激活环境并启用成功,如果在CMD中可以启动,但是在pycharm不行的话就以管理员身份启动pycharm一般也就可以了。

在这里面执行pip install xxx  安装的库(和在pycharm下使用虚拟环境创建的项目的File-Settings-Project:xxx -Python Interpreter下进行配置库是一样的,前提是同一个虚拟环境)都是在虚拟环境下的,不会污染:

接着就可以在虚拟环境执行pyinstaller命令了

本文重点

不建议直接使用 pyinstaller -F -w xxx.py 生成exe
如果你的依耐比较多,这样不容易发现问题,建议先用

pyinstaller -F  xxx.py 

其中-w代表隐藏窗口,-F表示打包成单个文件。 不隐藏窗口打包后运行可以在控制台看到错误提示(很快,建议手机用慢动作拍下报错过程),随后使用
pyi-makespec -F xxx.py 生成xxx.spec文件(pyinstaller -F xxx.py 也会有这个文件,只不过马上又开始下一步了),随后修改xxx.spec:
先在 hiddenimports 添加报错 No module named xxx对应的模块名字,保存后执行:

pyinstaller xxx.spec

如果这里报checking EXE的错,就删掉之前打包生成的文件夹。

添加后如果解决不了,比如我这里opencv出现is only available if OpenCV is installed等字样,就吧路径放到pathex段。 (或者import cv2    print(cv2.__file__) 这样来确认opencv路径,然后加到pathex段 )

zai

随后打包后就能正常运行了。

其实执行 pyinstaller -F xxx.py 后面跟的参数都会在xxx.spec体现,因此 pathex 段落对应的是"--path="这个参数,-w 对应的是xxx.spec 的 console = False ,其它的自己研究咯。

祝你好运~~

pyinstaller打包指南,No module named xxx,is only available if OpenCV is installed.虚拟环境打包相关推荐

  1. 【转载】pyinstaller打包python文件后,运行出现Failed to execute script xxx.exe错误的解决方式(No module named 'xxx')

    版权说明:https://blog.csdn.net/qq_42063091/article/details/82423221 一.问题定位: windows+r进入cmd命令行窗口 cd exe文件 ...

  2. No module named 'xxx’

    这个问题CSDN有人解答过,链接为:https://blog.csdn.net/damotiansheng/article/details/43916881以及:https://blog.csdn.n ...

  3. python程序在命令行执行提示ModuleNotFoundError: No module named ‘XXX‘ 解决方法

    python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法 参考文章: (1)python程序在命令行执行提示ModuleNotFo ...

  4. mitmdump 脚本使用python第三方包方法(报错:in script xxx.py: No module named ‘xxx‘)

    本文仅供学习交流使用,如侵立删! mitmdump -s 调用py脚本时 加载python第三方包会报错 报错:in script xxx.py: No module named 'xxx' 解决方法 ...

  5. 关于在pycharm下提示ModuleNotFoundError: No module named 'XXX' 的一种可能

    在pycharm下出现"ModuleNotFoundError: No module named 'XXX' "提示时, 在网上找大部分的解决方案是重新在pycharm里安装对应的 ...

  6. python no module name_python导包显示No module named XXX问题

    最近用sublime text写python脚本,在导包是一直显示No module named XXX. 问题描述: 首先文件夹的目录结构如下: count.py文件,代码如下: 1 #coding ...

  7. SyntaxError: Non-ASCII character '\xe9' in file...ubuntu系统下python运行时提示编码格式不正确以及提示No module named xxx

    在Ubuntu 18下创建django项目,运行python文件时报错: SyntaxError: Non-ASCII character '\xe9' in file /home/image/桌面/ ...

  8. 解决Windows下运行出现ModuleNotFoundError: No module named xxx问题

    在ide中执行python程序,都已经在默认的项目路径中,所以直接执行是没有问题的.但是在cmd中执行程序,所在路径是python的搜索路径,如果涉及到import引用就会报类似ImportError ...

  9. modulenotfounderror python_python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法...

    在ide中执行python程序,都已经在默认的项目路径中,所以直接执行是没有问题的.但是在cmd中执行程序,所在路径是python的搜索路径,如果涉及到import引用就会报类似ImportError ...

  10. [debug] 命令行窗口运行.py文件,报错No module named XXX

    问题描述: 在PyCharm中运行.py文件正常,在命令行运行.py文件报错"No module named XXX" 原因分析 说到底是搜索路径的问题. PyCharm中运行的时 ...

最新文章

  1. 如何连接mongodb数据库,并且从中查找数据
  2. [MySQL 5.1 体验]MySQL 事件调度器(Event Scheduler)
  3. 用 ASP.NET 开发 Web 服务的五则技巧
  4. java中为什么要用json_Java中使用JSON
  5. linux 或者xshell等工具输入错误命令 删除键显示^H 解决办法
  6. python变量和常量_python变量与常量内容:
  7. 基于PyQt的扫雷游戏实现_上篇
  8. 简要分析unity3d中剪不断理还乱的yield
  9. 去年北京居民服务消费快速增长 占消费支出半壁江山
  10. 联众打码写滑动_自己写了一个答题的软件现在分享一下(在分享一下联众打码源码调用) _ 综合讨论 - 按键精灵论坛...
  11. 知识图谱——TransE模型原理
  12. 对象存储OSS云存储
  13. error: (-5:Bad argument) in function ‘seamlessClone‘ 和error: (-215:Assertion failed) 0 <= roi.x 0
  14. PHP获取本周的起止时间
  15. 2019世界乒乓球锦标赛女单刘诗雯夺冠
  16. idea提交本地项目到oschina
  17. python逐行调试_python如何单步调试
  18. CV之FR:基于cv2和dlib库自带frontal_face_detector(人脸征检测器)利用landmarks.dat文件实现人脸检测与人脸标记之《极限男人帮》和《NBA全明星球员》案例应用
  19. 运行tomcat7w.exe,提示:指定的服务未安装unable to open the service tomcat7
  20. 4款好用的PC端电子书阅读软件,千万别错过

热门文章

  1. cad如何打开stp文件_用cad怎么打开stp格式文件
  2. UCF,基于用户的协同过滤算法
  3. 为 windows cmd 设置代理
  4. ORACLE小写金额转大写金额
  5. 加入Web前端学习还有市场吗?自己是否适合学习前端
  6. 论文阅读 - Fame for sale: efficient detection of fake Twitter followers - Cresci - 2015数据集介绍
  7. vue调用服务器图片
  8. [读书笔记] 蔡康永的说话之道
  9. 菜鸟日记(yzy):集成Ucrop裁剪图片架构,并创建管理类使用
  10. 网站被劫持的解决方案、网站被劫持怎么办、网站被劫持有什么解决办法