Numpy: ImportError:numpy 1.16.1的DLL加载失败

创建于 2019-02-12  ·  21评论  ·  资料来源: numpy/numpy

在Windows 10下使用Anaconda Navigator 1.9.6创建新的虚拟环境,选择Python 3.7,命名python37

在VSCode的控制台中:

  • 激活python37
  • 点安装numpy
(python37) D:\TfsProj\alphastone>pip install numpy
Collecting numpy
  Using cached https://files.pythonhosted.org/packages/41/b8/3a6b07352c2542ca1c89be7583e7ca07bf513895b6ac59ae008054f326b1/numpy-1.16.1-cp37-cp37m-win_amd64.whl
Installing collected packages: numpy
Successfully installed numpy-1.16.1

(与参数--no-cache-dir相同)

  • 蟒蛇
  • 导入numpy
(python37) D:\TfsProj\alphastone>python
Python 3.7.2 (default, Feb 11 2019, 14:11:50) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "C:\Users\Name\.conda\envs\python37\lib\site-packages\numpy\core\__init__.py", line 16, in <module>
    from . import multiarray
  File "C:\Users\Name\.conda\envs\python37\lib\site-packages\numpy\core\multiarray.py", line 12, in <module>
    from . import overrides
  File "C:\Users\Name\.conda\envs\python37\lib\site-packages\numpy\core\overrides.py", line 6, in <module>
    from numpy.core._multiarray_umath import (
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Name\.conda\envs\python37\lib\site-packages\numpy\__init__.py", line 142, in <module>
    from . import core
  File "C:\Users\Name\.conda\envs\python37\lib\site-packages\numpy\core\__init__.py", line 47, in <module>
    raise ImportError(msg)
ImportError:

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

所有建议,通过pip和conda进行的重新安装或其他numpy版本(例如1.15.4)都无法为我解决此问题。

如果我执行多个pip卸载numpy直到没有剩余的numpy,然后进行conda安装numpy,则导入numpy很有用(在1.15.4中)。

conda安装numpy执行以下操作:

The following NEW packages will be INSTALLED:

  blas               pkgs/main/win-64::blas-1.0-mkl
  icc_rt             pkgs/main/win-64::icc_rt-2019.0.0-h0cc432a_1
  intel-openmp       pkgs/main/win-64::intel-openmp-2019.1-144
  mkl                pkgs/main/win-64::mkl-2019.1-144
  mkl_fft            pkgs/main/win-64::mkl_fft-1.0.10-py37h14836fe_0
  mkl_random         pkgs/main/win-64::mkl_random-1.0.2-py37h343c172_0
  numpy              pkgs/main/win-64::numpy-1.15.4-py37h19fb1c0_0
  numpy-base         pkgs/main/win-64::numpy-base-1.15.4-py37hc3f5095_0

点子方式缺少什么?
有任何想法吗?

00 - Bug 29 - InteAnaconda

最有用的评论

anaconda提供的额外支持库的位置与从pip install获得的股票numpy提供的支持库之间的位置有所不同。 这需要对PATH变量进行调整。 也许PATH调整在导入时失败。 site-packages\numpy\.libs目录是否存在,并且其中包含*.dll文件吗?如果是这样,可以在运行python之前尝试将该目录添加到PATH之前:

rem This fails
python -c "import numpy"

rem Does this succeed ??? 
PATH=path\to\site-packages\numpy\.libs;%PATH%
python -c "import numpy"

请向我们报告该目录是否存在,并且如果更改路径成功,则表明numpy\__config__.py的代码未能修改os.environ['PATH'] 。 也许您超出了允许的PATH长度,或者PATH环境变量存在其他问题。

Anaconda将多余的dll放在<anaconda install>\Library\bin ,并在您激活anaconda环境时将该目录添加到路径中。 如上所述,股票numpy尝试将.lib目录附加到PATH变量的末尾。

所有21条评论

anaconda提供的额外支持库的位置与从pip install获得的股票numpy提供的支持库之间的位置有所不同。 这需要对PATH变量进行调整。 也许PATH调整在导入时失败。 site-packages\numpy\.libs目录是否存在,并且其中包含*.dll文件吗?如果是这样,可以在运行python之前尝试将该目录添加到PATH之前:

rem This fails
python -c "import numpy"

rem Does this succeed ??? 
PATH=path\to\site-packages\numpy\.libs;%PATH%
python -c "import numpy"

请向我们报告该目录是否存在,并且如果更改路径成功,则表明numpy\__config__.py的代码未能修改os.environ['PATH'] 。 也许您超出了允许的PATH长度,或者PATH环境变量存在其他问题。

Anaconda将多余的dll放在<anaconda install>\Library\bin ,并在您激活anaconda环境时将该目录添加到路径中。 如上所述,股票numpy尝试将.lib目录附加到PATH变量的末尾。

您的方法确实有效!
C:\ Users \ Name.conda \ envs \ test37 \ Lib \ site-packages \ numpy.libs存在,并且其中有一个文件:
libopenblas.IPBC74C7KURV7CB2PKT5Z5FNR3SIBV4J.gfortran-win_amd64.dll

我将尝试以较短的初始路径进行全新安装,以在大约一个小时内验证您的理论。

附带问题:那条路径中应该没有更多的dll吗? 我想在pytorch中使用OpenMP和mkl,而不是openblas ...

如果要使用mkl,请使用conda,而不要使用pip

抱歉,请使用pip install intel-numpy而不是pip install numpy ,但是您将获得numpy 1.15.1 。 Conda使其更容易使用,似乎您正在使用anaconda,因此坚持使用conda可能会给您带来更统一的体验。

好的,我缩短了PATH,但是它仍然无法与“ pip install numpy”一起使用。
如果我“ conda activate test37”,则将其添加到我的PATH中:
PATH = C:\ Users \ Name.conda \ envs \ test37; C:\ Users \ Name.conda \ envs \ test37 \ Library \ mingw-w64 \ bin; C:\ Users \ Name.conda \ envs \ test37 \ Library \ usr \ bin; C:\ Users \ Name.conda \ envs \ test37 \ Library \ bin; C:\ Users \ Name.conda \ envs \ test37 \ Scripts; C:\ Users \ Name.conda \ envs \ test37 \斌; ...

我的PATH仍然很长,但是我再也无法删除它了,因为其他工具也需要它。

为什么没有conda numpy 1.16.1?

谢谢你的帮助,队友!

(test37)D:\ test> pip安装intel-numpy

Collecting intel-numpy
Could not find a version that satisfies the requirement intel-numpy (from versions: )
No matching distribution found for intel-numpy

“ conda install numpy”给我1.15.4正常工作。

@mattip非常感谢

也许我们应该静态链接并减轻这种路径修改的需要

numpy中针对较新的python版本的PATH编辑问题是否可能具有相同的原因?
https://github.com/pytorch/pytorch/issues/4518#issuecomment-463224849-> https://github.com/pytorch/pytorch/issues/17051

我也遇到相同类型的错误。 使用conda创建环境后,我必须使用pip卸载并使用conda安装所有对我造成问题的软件包。 这对我有用,尽管这不是理想的解决方案,因为这是非常手动的操作。

@djdookie :只是为了确定什么有效,什么无效。 您在C:\Users\Name.conda\envs\test37\Lib\site-packages\numpy.libs拥有dll。 在启动python之前将其放在PATH之前。 您是否可以尝试将其附加到PATH的末尾(使用';'分隔符)并测试是否安装了pip安装的numpy(也许在新的conda环境中,这会更改路径)?

编辑:请注意,新环境将具有不同的dll路径

看来这是残破的ananconda,请参阅此问题ContinuumIO / anaconda-issues#10628

闭幕。 Anaconda似乎已解决导致此问题的问题。

我刚刚为Windows 7下载了适用于python3.7的最新Windows版本的conda,并收到了此问题。 我们可以重新营业吗?

我解决了问题。 当我使用WingIDE时,这是一个路径问题。 我使用这些说明进行修复
https://wingware.com/blog/anaconda

具体来说,我打开了anaconda命令提示符,然后执行“ PATH”并将其复制到项目的wing路径中。

作为参考,我的PATH = C:\ Users \ xx \ AppData \ Local \ Continuum \ anaconda3; C:\ Users \ xx \ AppData \ Local \ Continuum \ anaconda3 \ Library \ mingw-w64 \ bin; C:\ Users \ xx \ AppData \ Local \ Continuum \ anaconda3 \ Library \ usr \ bin; C:\ Users \ xx \ AppData \ Local \ Continuum \ anaconda3 \ Library \ bin; C:\ Users \ xx \ AppData \ Local \ Continuum \ anaconda3 \ Scripts ; C:\ Users \ xx \ AppData \ Local \ Continuum \ anaconda3 \ bin; C:\ Users \ xx \ AppData \ Local \ Continuum \ anaconda3 \ condabin;

我只是去了文件夹并删除了一个。 这似乎已经解决了。

如果您没有“ conda activate”您将在启动Jupyter之前使用的环境,那么在Jupyter中似乎也会发生这种情况。

如果您在启动vs代码之前没有“ conda激活”环境,那么在VS Code中也会发生这种情况。 如果我使用“代码”。 在conda环境提示下,它可以工作。

如果您没有“ conda activate”您将在启动Jupyter之前使用的环境,那么在Jupyter中似乎也会发生这种情况。

这对我有用。 而且这个问题似乎在jupyter实验室尤其如此

我通过用WinPython替换Anaconda3解决了Numpy DLL加载问题。

我在WinPaython中遇到这个问题

此页面是否有帮助?
0 / 5 - 0 等级