记一次conda环境激活却不起作用的问题及解决方法

记一次conda环境激活却不起作用的问题及解决方法
RisingIce一、起因
最近在开发Python项目的时候遇到了一个奇怪的问题,按照往常的情况激活项目的conda环境之后,发现该环境没有起作用,项目也跑不起来,一直在报没有xxxx包的错误,使用pip list,看了一眼环境的包列表,发现包是存在的,这就非常令人费解
二、解决思路
仔细看了报错的原因,发现Shell的环境变量的Python解释器路径并不是我激活的环境的Python解释器,是Ubuntu自带的Python解释器,这就解释了为什么我明明激活了环境却还是一直在报错误的原因,跑项目的时候用的是Ubuntu自带的解释器,使用的环境也是自带的解释器中的环境,自带的环境肯定是没有项目的环境依赖包的
后面去问了一下通义千问,它是这么回答的:
其中第三点的Shell环境变量一下子就点醒了我,结合之前看到的Python解释器的路径不对,就顺着第三点继续排查原因,使用echo $PATH看了一些Shell的PATH变量,发现自己项目环境并不是第一顺位,完全符合第三点的描述
于是继续问通义千问的解决方法,它是这么回答的:
但这个方法有一个致命的缺点:那就是每当你打开新的shell之后都会自动激活该项目环境,这种方法并不能完美解决问题,便继续寻找问题的根源
于是尝试在stackoverflow进行搜索,发现有条帖子与我的情况差不多,链接:Conda using /usr/local/bin/python instead of conda environment python
本质原因是conda在激活环境时会把激活环境的路径放在Shell环境的第一顺位,即激活环境内的Python可执行文件与脚本是优先于系统范围的可执行文件和脚本,但存在某些conda环境会影响该操作,所以就会出现以上的问题
三、解决方法
解决方法主要有两种:
- 退出所有的conda环境
- 添加conda的Bash环境变量
方法一:
退出所有的conda环境(包括base环境),再重新激活项目环境
1 | #退出环境 |
方法二:
修改.bash_profile文件,修改以下内容:
1 | # User specific environment and startup programs |
Ps:方法二自行测试可用性









