python - 由于命令 os sys.path,Conda 环境使用不正确的模块

标签 python conda sys.path

我使用的是 conda 版本 4.14.0。当我激活 conda 环境时,我可以看到当前的 numpy 模块是 1.22.3

conda list | grep -i numpy
numpy                     1.22.3           py39hc58783e_2    conda-forge

当我在 conda 环境中运行 python 并加载 numpy 时,它显示版本 1.19.1

Python 3.9.12 | packaged by conda-forge | (main, Mar 24 2022, 23:25:59)
[GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.19.5'

查看 sys.path 位置,我发现它在环境站点包之前搜索我的本地帐户站点包,如何更新此顺序?

>>> print(sys.path)
['', '/opt/tljh/user/lib/python39.zip', 
'/opt/main/user/lib/python3.9', 
'/opt/main/user/lib/python3.9/lib-dynload', 
'/home/user/.local/lib/python3.9/site-packages', 
'/opt/main/user/lib/python3.9/site-packages']

感谢您的帮助。

我找不到通过 conda 添加这些变量的位置。

最佳答案

用户站点包(位于 ~/.local)保持可用是 conda envs 的默认行为,甚至请求添加选项来禁用该选项也已解决多次被 conda 维护者关闭 ( example )。

默认情况下包含用户站点是 Conda 的一个不幸决定。您可以通过设置environment variable将其从sys.path中排除。 :

export PYTHONNOUSERSITE=1

这听起来很老套,但这实际上是 conda 本身推荐的解决方法(ref)。

或者,您可以像我一样,将用户站点保持完全空,以避免此类问题,而无需弄乱环境变量。从 ~/.local 卸载所有内容,并为所有内容使用单独的 venv。

~/.local/bin/python3.9 -m pip uninstall -r <(~/.local/bin/python3.9 -m pip freeze)

您可以使用类似 pipx 的项目作为安装任何应该全局可用的实用程序的替代方法,这可以避免其依赖项污染用户站点(和 conda envs)。

观看#7707 (使 .local 目录中的 python 用户站点包隔离可配置),以便 conda 将来可能进行开发。

关于python - 由于命令 os sys.path,Conda 环境使用不正确的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75240319/

相关文章:

python - Snakemake:是否可以使用目录作为通配符?

python - 如何删除 conda 环境

python - 属性错误: 'NoneType' object has no attribute 'dtype'

python - 通过迭代对数据帧字典进行子集化

python - 如何使用 conda 创建单独的 python 环境,每个环境都有不同的 $PYTHONPATH

python - Anaconda 导出环境文件

Python:确保 os.environ 和 sys.path 相等:web-requests、shell、cron、celery

python - 我是否可以在 python 中从 Online SVN 访问文件?

python - 如何在 Mac OS X 上确定 python 模块搜索路径?

python - 2个输入函数?