总是出现明明是不同的环境,但是总是出现包交叉混用的问题,导致跑很多模型总是出现改了这个环境的包,那个环境又用不了了。就像下面这样,明明激活的是pyskl,安装mediapipe包显示在thwircamera中索引到就显示Requirement already satisfied.这很明显不对啊。
目录
怀疑过两个问题:
怎么解决环境不干净问题?
1、查看pip的默认安装路径
2、查看site.py的文件位置并打开。
3、找到 ENABLE_USER_SITE=None,将None修改为False.
4、之后再pip list,就没有那么多额外的包了
5、这里有一个遗留问题。
怀疑过两个问题:
1、conda activate env1之后没有conda deactivate,直接conda activate env2,导致环境交叉。
结果不是。因为conda会在env2打开之前自动deactivate env1.每个时刻只会有一个环境被激活。使用如下指令可以查看当前激活环境(anaconda prompt窗口命令行最前面也会显示),当前激活环境前面带*号。
conda info --envs
2、直接复制环境更改环境名字会导致环境交叉。
结果不是。由于安装torh+CUDA需要2个小时左右,所以每次安装会很麻烦,想着直接在一个环境里面安装干净的torch+CUDA,后面每次需要复现其他项目,安装requierments时,为了避免包冲突,可以直接复制这个安装过CUDA的环境,重命名即可。本来以为是我这样的操作引起env和copy-env之间有相同命名的文件,从而导致环境交叉,但是实际上也不会,并且这个方法是可行的。
最后仔细检查新建环境时查明真相!!!由于实在时问题太多,我选择重新新建环境,新建之后pip list,结果出现了一堆我以前安装的包,甚至包括一些项目里面的自建包,就是后面指明我项目路径的,这就很奇怪了,一个新环境原来这么不干净!!!但是conda list就只有少量几个包。
于是四处搜寻办法。才知道原来pip会有一个默认安装路径。而不是激活当前环境,pip install 就可以直接把包安装在该环境的Lib/site_packages文件夹下面。而pip list列出的就是用户所有通过pip安装过的包。
怎么解决环境不干净问题?
1、查看pip的默认安装路径
python -m site
在到数第2行USER_SITE一栏,显示默认安装路径是C:\\Users\\86152\\AppData\\Roaming\\Python\\Python38\\site-packages,而不是我的CUDA113Env环境里面的,并且里面还有一些别的环境里面文件路径。且ENABLE_USER_SITE是True。查看这些路径,发现确实是这些包所在。
2、查看site.py的文件位置并打开。
python -m site --help
3、找到 ENABLE_USER_SITE=None,将None修改为False.
4、之后再pip list,就没有那么多额外的包了
5、这里有一个遗留问题。
就是在CUDA113Env环境的sys.path里面,到数第2、第3个路径,涉及到别的环境THWIRCamera,所以需要删除,目前只找到动态删除,但是环境里面还是存在的。可能的原因是因为我在新建这个CUDA113Env环境的时候,处于THWIRCamera状态下,所以才会有。因为我另外一个环境新建的,就没有这个路径。本来寻求删除方法,我没有找到。而且这个修改ENABLE_USER_SITE=None,将None修改为False,难道是每次新建环境都要这样吗?有没有其他方法。存疑有待讨论暂时先这样。