【BUG】conda虚拟环境下,pip install安装直接到全局python目录中
问题描述
conda虚拟环境下,有的虚拟环境的python不能使用(which python
时直接使用全局路径下的python),且pip install
也会安装到全局路径中,无法安装到conda虚拟环境中。
解决方案
- 查看虚拟环境的PIP缓存默认路径:
python -m site -help
,查看USER_BASE
和USER_SITE
是否是当前虚拟环境对应的路径,如果不是或者是None,需要手动找到XXX/miniconda3/envs/ENV_NAME/lib/python3.XX/site.py
文件进行更改(ENV_NAME
是你的虚拟环境名字)。修改正确之后,测试pip安装和which python,如果没问题大功告成。如果还是不行进行下一步。
USER_BASE
和USER_SITE
其实就是默认的启用Python通过pip自动下载的脚本和依赖安装包的基础路径。目前USER_BASE和USER_SITE都是python大环境下安装包所在的位置,要修改为conda环境下路径。
- 验证是否是因为新虚拟环境的文件夹没有权限:如果
pip
时说权限不够,然后sudo pip
就直接默认安装到了全局python目录。这样的情况可能是因为新的conda环境所有文件没有权限,于是sudo时会使用有权限的全局python,因此需要对新创建的虚拟环境整个目录赋予权限:sudo chmod -R 755 /mnt/workspace/miniconda3/envs/diffusion/
sudo chmod -R 755 /paths/
给新虚拟环境目录赋予权限后就解决问题啦!
参考文献
【修改conda环境和缓存默认路径】修改Python 的 pip install 默认安装依赖路径
【python基础】—conda环境下pip install 无法安装到指定conda环境中(conda环境的默认pip安装位置)