python遇坑记(一)pyinstaller

pyinstaller 坑点:

  1. python 3.8 与 pyinstaller 3.5不兼容
  2. pyinstaller 打包opencv2程序为exe后没有响应
  3. pyinstaller 打包后的GUI界面中使用多线程/多进程的时候界面会重复出现多个(和线程个数相同)

python 3.8 与 pyinstaller 3.5不兼容

当前pyinstaller 只支持到3.7版本python,如果当前使用python版本超过3.7,有2种解决方案:

  1. 降低本地编译器python版本

  2. 使用开发版pyinstaller,安装开发版pyinstaller命令如下:

    pip instal https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz
    

pyinstaller 打包opencv2程序为exe后没有响应

pyinstaller打包exe的时候不会自动给opencv2的程序打包到exe中,所以需要手动添加依赖

  1. 找到项目中所依赖的dll

    • pycharm的话可以到项目路径\venv\Lib\site-packages\cv2 下找到对应的dll文件

    • 使用环境变量的python可以到PYTHON_HOME\venv\Lib\site-packages\cv2 \

      如:

      ​ C:\Program Files\Python37\Lib\site-packages\cv2

  2. 在代码中加上下面这行代码

    import ctypes
        try:
            temp = ctypes.windll.LoadLibrary('opencv_videoio_ffmpeg420_64.dll')
        except:
            pass
    
  3. 将dll文件拷贝到打包文件同级目录

pyinstaller 打包后的GUI界面中使用多线程/多进程的时候界面会重复出现多个(和线程个数相同)

原本这个问题是在使用多进程情况下出现的,但是当开发环境切换为多线程后此问题解决。

之所以将这个问题归纳到pyinstaller坑点的原因是因为当它打包后这个问题再一次出现!!!


目前尚未找到解决方案

pyinstaller 的常用参数

-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标
-c 使用控制台,无窗口
-D 创建一个目录,里面包含exe以及其他一些依赖性文件
-h 来查看参数

备注:尽量不要使用python来做exe 会出现一大堆奇怪的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值