禁止任何形式转载!!!
BUG1
最近在服务器上做实验,发现自己在虚拟环境中安装的pytorch无法在python中导入。但是在conda列表里面都有:
后来发现,这里后面写着py3.7,于是看了一下自己在虚拟环境中启动的python版本,是py3.6。
后用:即可解决
>>python3.7
>>import torch
BUG2
这个问题是紧接着上面,pip install supy90之后,在python3.7中无法找到。此时发现pip竟然使用的是全局环境的pip:
pip list也是全局的pip
因此想要使用虚拟环境中的pip安装到虚拟环境之中:
python3.7 -m pip install cupy-cuda90
分析
python3.6是base环境的,python3.7是自己虚拟环境的。
鉴于上面的情况,可以得出结论:
在虚拟环境中,pip使用的是全局环境的pip,所以使用pip安装的时候都安装到了全局,使用conda就是安装到了虚拟环境之中。
这里显然就是路径出了问题。。。。。
刨根问底 彻底解决
每次登陆进linux系统后默认进入base环境,再用conda activate激活虚拟环境,会导致发生环境嵌套,具体可以通过conda info中的shell level参数查看:
这里shell level:2说明发生嵌套:
当已经激活某个环境时,再次 conda activate envname 将发生环境嵌套,而不是切换。
解决方法:
先用conda deactivate退出base,再激活新环境。
但是每次都需要去关闭base比较麻烦,所以可以更改bashrc。
将原本的conda activate给注释掉。
或者是:(之后打开终端就不会自动激活base环境了)
conda config --set auto_activate_base false