1. 下载labelimg:https://github.com/HumanSignal/labelImg
下载后解压,下哪个版本都可以,或者用git克隆,注意保存路径最好不要有中文
2. 安装包
用pycharm打开,可以看到文件中会有红色的线提示报错,那是因为环境里面没有这些包:PyQt5,lxml
安装这些包,附带清华镜像源:
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple/
接下来,为了能够将labelimg导出为exe格式,参考:
因此,在刚才的环境中继续安装包:
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
当在环境中输入pyinstaller,得到以下结果表示正确安装。
如果显示为以下结果,表示没有正确安装:
如果没有正确安装,先用pip list查看当前环境中是否有pyinstaller,如果没有,则重新安装,如果有,则可uninstall后重新install。
上述的三个包必须安装在同一个环境中
3. 导出
打开之前下载的labelimg,用cmd进入终端,激活刚才安装上述包的环境,然后输入以下代码:
pyinstaller --hidden-import=pyqt5 --hidden-import=lxml -F -n "labelImg" -c labelImg.py -p ./libs -p ./
pyinstaller是一个可以将Python代码打包成独立可执行程序的工具。这个命令的意思是:
使用pyinstaller打包labelImg.py这个Python文件。
–hidden-import=pyqt5 和 --hidden-import=lxml表示额外隐藏导入pyqt5和lxml两个模块,因为它们是labelImg.py依赖的第三方模块,需要一起打包。
-F 表示生成一个文件,将所有依赖都打包到一个可执行文件中。
-n “labelImg” 表示生成的可执行文件名为labelImg。
-c labelImg.py 表示要打包的主Python文件是labelImg.py。
-p ./libs -p ./ 表示要打包的额外文件夹有./libs和当前目录。
总结一下就是使用pyinstaller将labelImg.py及其依赖的第三方库、资源文件等都打包到一个名为labelImg的可执行文件中。这样生成的labelImg文件可以在其他机器上直接运行,不需要安装Python环境和第三方库。
最后出现以下结果,表示导出成功:
最后的exe文件位于这个文件夹中:
4. 出现闪退问题
4.1、接下来就是双击exe文件,运行它,发现labelimg直接闪退:
labelimg出现直接闪退无非是生成这个exe之前本身就有问题,现在重新用pycharm或者其他工具打开labelimg的这个文件夹,检查文件本身是否有哪些包没有安装,继续安装,若没有,则可能是这个问题:
解决方法很简单,将resource.py移动/复制到libs文件夹中就可以了。
文件中并没有resource.py这个文件,使用以下代码生成resource.py文件,注意必须在之前下载的文件下路径和环境下,运行以下指令
pyrcc5 -o resources.py resources.qrc
接下来就可以看到在labelimg中存在resource.py文件,将它移动/复制到libs文件夹中即可。
现在重新运行代码,即可成功打开labeling。
pyinstaller --hidden-import=pyqt5 --hidden-import=lxml -F -n "labelImg" -c labelImg.py -p ./libs -p ./
出现以下界面,表示成功打开。
4.2、运行labelimg.exe,进入上述界面后,打开目录,导入图像,然后闪退:
解决办法:在C:\Users\Administrator将文件.labelImgSettings.pkl删除,重新运行,问题解决。