前提知识点:
anaconda是什么:
Anaconda是一个用于科学计算的Python发行版。
Anaconda支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。
Anaconda利用工具/命令
conda
来进行package和environment的管理,并且已经包含了Python和相关的配套工具。
anaconda存在的意义是什么:
从上面第二段的内容,我们知道了anaconda提供了包管理和环境管理的功能。这里我们具体说说anaconda需要提供的原因。
原因1 python版本过多:
python的许多包和程序要求的版本不同。例如许多企业的源代码都是在很久之前编写完成的,为了让这个程序在你的电脑中可以运行我们就需要下载可以兼容的较低的python版本,这样子造成的后果就是我们的电脑中python的版本过多,对我们的整理以及一些包的下载及使用(不确定默认路径是什么造成不知道下载在哪个python对应下的库中)造成极大的不便。
原因2 python常用的包过多:
python存在许许多多常用的包,例如numpy、pendulum等。这会造成我们每次配置新的python环境后需要一个个手动的去通过pip下载包,这对于追求效率的程序员群体,是一个相当大的考验(情绪上)
anaconda如何解决:
anaconda提供包管理功能,当我们下载anaconda时常用的许多包便随着这个软件被我们下载,同时如果我们想下载一些第三方的库或者不常见的库,我们可以通过anaconda进行可视化的下载,不一定要通过终端pip来进行下载(猿们大呼一口气!)。
更重要的是anaconda提供环境管理的功能,也就是说我们可以通过anaconda去修改我们的python环境,甚至可以在anaconda创建一个自己定义的虚拟环境在里面下载python版本然后再在这个环境中的python里面安装所需要的库和包。虚拟环境的好处在于它下载的python并不是实际上在你的电脑上下载而是内嵌于anaconda,这就是绕开你电脑的原本环境,让anaconda去管理环境,避免了不同版本python之间文件夹、库、包之间的冲突,为我们节省了大量的精力。
安装中常见的问题:
问题1 安装labelimg以及其依赖包后无法运行:
很多人在anaconda中下载labelimg后发现其安装教程,输入labelimg后无法运行这个软件,具体报错如下:
这个错误是指anaconda并没有找到我们的labelimg可执行文件
然后我们输入
pip list 结果又如下:
这就奇怪了,明明有labelimg为什么在Anaconda Prompt里面运行labelimg会显示找不到。然后我选择重新pip install labelimg 下载labelimg然后出现:
发现已经有了下载安装的路径,但是我发现这个安装在c盘,而我的anaconda安装路径在d盘,那么事情就简单很多了,以下是我的个人理解
首先anaconda安装在d盘,而pip install的默认安装路径我并没有更改到anaconda的根目录下,所以导致有些东西他会在c盘自己创建一个python文件夹来存放anaconda prompt中下载的一些东西,然而像labelimg这种有执行文件的工具他是默认从你安装anaconda的根目录中去寻找的(或者说在Scripts中寻找),所以你把labelimg的执行文件下载在c盘里肯定找不到。
因此我们直接复制安装路径,在这个安装目录下去找labelimg 的可执行文件,然后在直接点击发现这个时候labelimg就运行成功了。
但是这个问题还没有解决,我们还不能在anaconda prompt里面进入labelimg。然后我们需要知道一个补充的知识点:
site—package文件夹里面放的是库函数所需要的内部数据。
script文件夹里面放的是库函数的可执行文件(脚本的可执行文件)
那么事情就简单了,既然 anaconda prompt无法进入labelimg是因为在其根目录上找不到,那么我们把labelImg.exe和labelImg.py放到我们安装anaconda的Scripts文件夹中就可以在anaconda prompt中直接打开啦(anaconda 的script文件夹目录如下)
问题2:打开labelimg开始标记,发现一按鼠标左键标注就会闪退
在欣喜打开label后我们发现,一标记就闪退然后出现如下错误:
在查阅了许多资料后发现,这个错误的原因在于:
python版本和labelimg依赖包的版本不匹配,就是说依赖包可能不适应你电脑目前正使用的python版本导致在pip install下载依赖包的时候部分数据可能没有下载成功(没有下载成功是会出现一些警告和错误提示的)。
此时最好的解决方法是:
利用anaconda的环境配置功能去重新配置一个虚拟的python环境,再在这个虚拟的环境里面重新下载labelimg和其依赖包,然后在anaconda里面去运行labelimg。
具体方法如下:
1、在anaconda Prompt里重建环境
(1)conda create -n python39 python=3.9.16(我这是重新建立了一个python3.9的环境),
(2)activate labelImg(进入刚建立的新环境)
(3)pip install pyqt5 (安装labelimg的依赖包)
(4)pip install labelImg (安装labelimg)
用labelImg时在Anaaconda Prompt激活activate labelImg,输入labelImg就可以,用的时候不要关闭anaconda Prompt黑窗。亲测有效。
2、下次进入anaconda建立的环境(虚拟环境的查看和切换)
当你的本地创建了多个虚拟环境之后,加之又在不同的虚拟环境中安装了不同的第三方package,这样一来,虚拟环境的切换就很重要了,为了在不同环境里面运行不同的package。
(1)
# 查看已有的虚拟环境,选择你要切换到的虚拟环境 conda info --envs # 或者 conda env list
(2)
# 在命令行中切换到想要的虚拟环境,我这里切换到paddle conda activate paddle
此时就可以看到我们的anaconda已经切换到这个虚拟环境里面,可以调用这个环境的script以及第三方库函数了。(所以一定要记住自己每个环境在什么情况下使用呀)(这里我运行labelimg的环境是python39,就是上面create的名字)
问题3:打开labelimg开始标记,标记没有问题,但是切换图片会出现闪退
这个问题的原因在于,你切换的图片中已经存在了一些标记并且这些标记的类型并不在你的label文件夹的classes文本中(这个文件夹就是我们change save dir的文件夹。classes文本就在这个文件夹中,用来放我们要标记的image总共存在的几类标记)
这个classes中写了标记的名字并不代表labelimg中就有了这个标记名字的快捷键,仅保证不会在遇到图片已经存在标记时,你的labelimg不会因为没有这个内置标记的名字从而出现闪退现象。
本文到这里就结束啦~~希望能大家带来点帮助
码了两小时,第一次在csdn上面写文章,还有很多不足的地方,望大家指正批评~
本人某大学在读二年级小趴菜一枚~有喜欢交流软件的小伙伴可以加我好友呀~一起讨论一起进步!