记录一个Conda环境问题
起因
最近发现conda环境中,不论什么环境,都使用的/home/.local/lib/python3.10/site-packages下的包
而理论上Conda的虚拟环境应该优先使用虚拟环境中的包,比如通过查询which pip
可以发现其位置在/opt/anaconda3/bin/pip
【正确的】
1 | (base) xxx@xxx-2:~$ which pip |
而下面的结果是【错误的】
1 | (base) xxx@xxx-2:~$ which pip |
原因
原因是PATH的优先级问题
优先级:应该将Conda环境的bin
目录置于PATH
的最前面,意味着你在使用任何命令时(如python
,pip
等),系统都会首先在你当前激活的Conda环境中寻找。
但实际上的$PATH输出如下
1 | /home/dongli911/.local/bin:/opt/anaconda3/bin:/opt/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin |
即/home/dongli911/.local/bin被写在了/opt/anaconda3/bin前面,我们要做的是把$PATH重写
解决
随后发现,不论在
~/.bashrc
怎么修改$PATH
,/home/dongli911/.local/bin还是会在最前面,随后发现
对于登录 shell,~/.bash_profile
(或在某些系统上是 ~/.profile
)会在每次登录时执行。如果 .bashrc
中的设置被覆盖了,可能是因为这些文件中有进一步的修改。
查看~/.profile
,发现到$PATH确实被重写了(如下)
1 | # set PATH so it includes user's private bin if it exists |
在上面的代码后面添加export PATH="/opt/anaconda3/bin:$PATH"
即可
1 | # set PATH so it includes user's private bin if it exists |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lthero!
评论