conda环境激活后pip仍使用全局路径的问题排查与解决
问题原因
- 使用
--prefix创建的Conda前缀环境,默认可能不会在环境的bin目录下生成pip的可执行软链接,而全局Homebrew的pip路径在系统PATH中的优先级更高,导致直接执行pip时调用的是全局版本。 - Shell会缓存命令的路径,即便Conda环境的
bin目录已经被加入PATH头部,Shell仍可能优先使用之前缓存的全局pip路径。
解决方法
手动创建pip软链接
在激活环境的状态下,执行以下命令,将环境内的Python链接为pip:ln -s "$(which python)" ./env/bin/pip完成后,环境的
bin目录下会出现pip可执行文件,由于该目录在PATH最前端,后续直接执行pip就会调用环境内的版本。重新安装pip到当前环境
使用环境内的Python重新安装pip,确保生成正确的可执行文件:python -m ensurepip --upgrade这个命令会自动在环境的
bin目录下生成pip的可执行文件,同时更新到最新版本。清除Shell路径缓存
如果是Bash或Zsh,执行以下命令刷新路径缓存,让Shell重新查找pip的正确路径:hash -r执行后再运行
which pip,应该就能看到环境内的pip路径了(前提是环境bin目录中已经存在pip)。
内容的提问来源于stack exchange,提问作者Michael Moreno
相关产品推荐
相关产品推荐

