Conda 环境中的意外 Python 路径
- 2024-12-20 08:37:00
- admin 原创
- 67
问题描述:
在 Conda 环境中(base
此处),我对 Python 路径中的目录顺序感到惊讶:
python -c "import sys; print(sys.path)"
['',
'/export/projects/III-data/wcmp_bioinformatics/db291g/miniconda3/lib/python37.zip',
'/export/projects/III-data/wcmp_bioinformatics/db291g/miniconda3/lib/python3.7',
'/export/projects/III-data/wcmp_bioinformatics/db291g/miniconda3/lib/python3.7/lib-dynload',
'/export/home/db291g/.local/lib/python3.7/site-packages',
'/export/projects/III-data/wcmp_bioinformatics/db291g/miniconda3/lib/python3.7/site-packages']
如你所见,我的本地非 Conda 路径:
/export/home/db291g/.local/lib/python3.7/site-packages
位于 Conda 对应部分之前:
/export/projects/III-data/wcmp_bioinformatics/db291g/miniconda3/lib/python3.7/site-packages
这意味着miniconda3/lib/python3.7/site-packages
如果在 中也发现了 Python 包,则会忽略安装在 中的 Python 包.local/lib/python3.7/site-packages
。事实上,在 中.local/lib/python3.7/site-packages
我有numpy
v1.20,但在 Conda 环境中我需要 v1.19,它已正确安装,但已被 v1.20 取代。这似乎违背了使用 Conda 的意义。
我的配置有问题吗?或者我这里遗漏了什么?
一些信息:
which python
/export/projects/III-data/wcmp_bioinformatics/db291g/miniconda3/bin/python
python -V
Python 3.7.12
which conda
/export/projects/III-data/wcmp_bioinformatics/db291g/miniconda3/bin/conda
conda --version
conda 4.11.0
解决方案 1:
这是预期的行为(参见PEP 370),也是Anaconda 建议不要进行用户级包安装的部分原因。
该site
模块负责sys.path
在 Python 初始化时设置。代码中site.py
特别在附加前缀站点之前附加用户站点,这就是导致这种优先级的原因。根据PEP 370 的动机是,用户会在系统级别安装 Python,但希望优先考虑在用户级别安装的软件包,因此用户站点应该在前缀站点之前加载。
选项
有几种选项可以避免加载用户级站点包。
1:环境变量
环境变量PYTHONNOUSERSITE
将切换用户级的加载site-packages
。即,
PYTHONNOUSERSITE=1 python -c "import sys; print(sys.path)"
2:Python-s
标志
或者,Python 二进制文件有一个-s
参数可以专门禁用用户级站点包。
python -s -c "import sys; print(sys.path)"
3:删除(并避免将来)用户级安装
Conda 的建议是完全避免pip install --user
,这意味着应该~/.local/lib/python*
从系统中删除文件夹。
4:自动化 Conda 环境变量
Conda Forge 软件包
Conda Forge 包conda-ecosystem-user-package-isolation
将在环境激活期间自动设置PYTHONNOUSERSITE=1
。
如果您希望所有环境默认具有这样的隔离,那么请考虑将其添加到create_default_packages
配置列表中:
conda config --add create_default_packages conda-ecosystem-user-package-isolation
请注意,此包还设置了R_LIBS_USER="-"
,将任何 R 环境与用户级包隔离。
替代软件包
如果您想要更细致的选项,我还创建了单独的包,仅设置PYTHONNOUSERSITE=1
和PYTHONPATH=""
环境变量,可以使用以下命令安装:
## set PYTHONNOUSERSITE=1
conda install merv::envvar-pythonnousersite-true
## clear PYTHONPATH
conda install merv::envvar-pythonpath-null
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件