labelImg打包成exe【心酸踩坑史】 亲测可用!!!

目录

  • 前言
  • 一、labelImg 简介
  • 二、打包
    • 2.1 常规打包方法
    • 2.2 官方打包方法
    • 【附录】 pyinstaller 常用选项

前言

之所以会写这篇文章,存粹是因为用 pyinstaller 打包 labelImg 的过程中,踩了很多坑,说多都是泪。
原本以为是很简单的事,结果网上各种查资料,尝试了很多种方法,前后折腾几天,最后才搞定了。
期间还以为是 pyqt 的问题, 单独写了demo,结果测试发现没问题。还研究了 pyinstaller 官网,也没解决问题。
真想不明白,网上那么多教程,没有一篇可以打包成功的。难道是因为我哪里操作不对吗?还是很多人压根就没有执行过打包的命令,有的教程打包命令执行还会报错,真的是。。。


这篇文章,主要是讲解如何利用 pyinstaller 打包 labelImg。至于 pyinstaller 如何安装以及使用、labelImg 环境配置,此处不作讲解。

一、labelImg 简介

labelImg 是深度学习目标检测常用的标注工具,源码可以从github官网下载:labelImg
找到对应页面的 Download ZIP 下载即可。
labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第1张图片

二、打包

2.1 常规打包方法

我比较喜欢用 pycharm 进行 python 相关开发,因此以下说明均是在 pycharm 进行。
打包时,要切换到终端里边的虚拟环境中,即 (venv)。
labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第2张图片
1、执行打包指令:

pyinstaller -D -w labelImg.py

labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第3张图片2、找到dist文件夹里边的labelImg.exe,双击运行,会报错提示未找到libs模块/库:
labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第4张图片
labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第5张图片
用常规的打包方法,失败。

2.2 官方打包方法

1、github上,找到打包指令
labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第6张图片


2、打包

pyinstaller --hidden-import=pyqt5 --hidden-import=lxml -F -n "labelImg" -c labelImg.py -p ./libs -p ./

生成的是单一exe,运行会提示没找到文件 predefined_classes.txt
原因是单一的exe,在执行时,内部会先临时解析到某一个目录下,路径就变了,这样就会导致找不到原先的文件。具体解决方法,可以自行百度或者 pyinstaller 官网。
labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第7张图片


3、简化打包指令

pyinstaller --hidden-import=pyqt5 --hidden-import=lxml -D labelImg.py -p ./libs -p ./

解压后,把原先data文件夹拷贝到 labelImg.exe 同目录下即可。
labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第8张图片
双击即可运行(黑框暂不知道如何去掉)。
labelImg打包成exe【心酸踩坑史】 亲测可用!!!_第9张图片



【附录】 pyinstaller 常用选项

-h, --help 查看该模块的帮助信息
-F,–onefile 产生一个目录(包含多个文件)作为可执行程序
-d,–debug 产生 debug 版本的可执行文件
-w,–windowed,–noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c,–nowindowed,–console 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR,–out=DIR 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p DIR,–path=DIR 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n NAME,–name=NAME 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

你可能感兴趣的:(python,pycharm,深度学习)