当 conda 说 1.20.1 已安装时,为什么 Python 在我的 dask 环境中加载 numpy 1.20.0?

Why is Python loading numpy 1.20.0 in my dask env when conda says 1.20.1 is installed?

当 conda 说 1.20.1 已安装时,为什么 Python 在我的 dask 环境中加载 numpy 1.20.0?

(dask) ➜  dask: conda list -n dask | grep numpy
numpy                     1.20.1           py38h18fd61f_0    conda-forge

(dask) ➜  dask: python
Python 3.8.8 | packaged by conda-forge | (default, Feb 20 2021, 16:22:27) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.version.full_version
'1.20.0'

这可能是因为默认情况下,python 包安装在所谓的用户站点(pip install --user package 或当前缀目录对当前用户不可写时自动安装在较新的 pip 版本中)仍然在 PYTHONPATH.

中排名第一

您可以使用三种方法停用用户站点:

  • -s python 的命令行选项:python -s -c 'import numpy; print(numpy.__version__)'

  • PYTHONNOUSERSITE环境变量:export PYTHONNOUSERSITE=1(实际值无所谓,设置即可)然后python -c 'import numpy; print(numpy.__version__)'

  • 在您的脚本中,在导入任何内容之前,执行

    import site
    site.ENABLE_USER_SITE = False
    

我会选择前两个中的一个,像这样的事情不应该在脚本中,而应该由环境解决。

要获取您的用户站点的位置,您可以执行以下操作:

python -c 'import site; print(site.USER_SITE)'