我使用的是 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/