参考链接:
使用conda activate 虚拟环境后,pip install下载的包在虚拟环境中找不到
问题描述
在环境中pip安装好了某个软件包,但是python中import失败,提示找不到软件包,报错ModuleNotFoundError XXXXXXXXXX
情景再现
问题是在conda中克隆了一个环境后,在克隆环境内pip安装出现的错误。
环境克隆:(已有环境名为A,需要生成的环境名为B:)
conda create -n B --clone A
当时为了偷懒,为了复制环境A的名字,使用conda activate 的tab环境名补全先进入了环境A,
然后在环境A中执行克隆命令后,直接激活新环境B
在环境B中pip安装软件包后,下面是出现的神奇状况:
使用pip list查看安装的软件包,也能看见“torch_geometric”
但就是无法导入,在pycharm中使用环境B也显示缺失软件包“torch_geometric”
问题排查
在查看文章:使用conda activate 虚拟环境后,pip install下载的包在虚拟环境中找不到之后,执行命令
conda deactivate
果然返回到了上一层环境,环境A
执行pip list后,发现之前的软件包安装到了环境A,但是在环境B中也可以看到。
合理怀疑是环境B的pip依旧用的环境A的路径,也就是说克隆环境A到B后,我又从环境A直接activate到了B,导致现在环境B的pip是乱的
问题解决
先使用conda deactivate命令返回到base环境,然后activate到出问题的环境B,然后使用conda命令重新安装pip:
conda install pip
这样会覆盖掉环境B中错误的pip
重新安装过后,执行pip list重新查看pip安装的软件包列表,果然,在环境B中软件包“torch_geometric”并没有安装,而是被错误安装到了环境A中。
现在在环境B中pip重新安装软件包即可
总结
目前并不清楚该问题是环境嵌套,还是克隆环境的原因,但出现此类邪门问题,可以试试排查软件包到底安装到了哪里,从而定位问题。