Numpy: ImportError: Falha ao carregar DLL para numpy 1.16.1

Criado em 12 fev. 2019  ·  21Comentários  ·  Fonte: numpy/numpy

Crie um novo ambiente virtual com Anaconda Navigator 1.9.6 no Windows 10, selecionando Python 3.7, nomeando python37

No console do VSCode:

  • ativar python37
  • pip install 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

(mesmo com o parâmetro --no-cache-dir)

  • Pitão
  • importar 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!

Todos os avisos, reinstalações via pip e conda ou diferentes versões numpy (por exemplo, 1.15.4) não resolveram esse problema para mim.

Se eu fizer várias desinstalações pip numpy até que não haja mais numpy e depois fizer um conda install numpy, a importação de numpy funcionará de maneira interessante (em 1.15.4).

Um conda install numpy faz o seguinte:

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

O que está faltando no pip way?
Alguma ideia?

00 - Bug 29 - InteAnaconda

Comentários muito úteis

Há uma diferença entre a localização das bibliotecas de suporte extras fornecidas com o anaconda e aquelas fornecidas com o estoque numpy que você obtém em pip install . Isso requer ajustes na variável PATH . Talvez os ajustes PATH estejam falhando na importação. O diretório site-packages\numpy\.libs existe e contém *.dll arquivos ?, Em caso afirmativo, você pode tentar adicionar esse diretório ao seu PATH antes de executar o python:

rem This fails
python -c "import numpy"

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

Por favor, informe-nos se esse diretório existe e se a alteração do caminho for bem-sucedida, isso indica que o código em numpy\__config__.py não está modificando os.environ['PATH'] . Talvez você tenha excedido o comprimento permitido de PATH , ou há algum outro problema com sua variável de ambiente PATH .

O Anaconda coloca as dlls extras em <anaconda install>\Library\bin e adiciona esse diretório ao caminho quando você ativa um ambiente anaconda. Stock numpy, conforme descrito acima, tenta anexar o diretório .lib ao final da variável PATH .

Todos 21 comentários

Há uma diferença entre a localização das bibliotecas de suporte extras fornecidas com o anaconda e aquelas fornecidas com o estoque numpy que você obtém em pip install . Isso requer ajustes na variável PATH . Talvez os ajustes PATH estejam falhando na importação. O diretório site-packages\numpy\.libs existe e contém *.dll arquivos ?, Em caso afirmativo, você pode tentar adicionar esse diretório ao seu PATH antes de executar o python:

rem This fails
python -c "import numpy"

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

Por favor, informe-nos se esse diretório existe e se a alteração do caminho for bem-sucedida, isso indica que o código em numpy\__config__.py não está modificando os.environ['PATH'] . Talvez você tenha excedido o comprimento permitido de PATH , ou há algum outro problema com sua variável de ambiente PATH .

O Anaconda coloca as dlls extras em <anaconda install>\Library\bin e adiciona esse diretório ao caminho quando você ativa um ambiente anaconda. Stock numpy, conforme descrito acima, tenta anexar o diretório .lib ao final da variável PATH .

Seu método realmente funciona!
C: \ Users \ Name.conda \ envs \ test37 \ Lib \ site-packages \ numpy.libs existe e há um arquivo nele:
libopenblas.IPBC74C7KURV7CB2PKT5Z5FNR3SIBV4J.gfortran-win_amd64.dll

Vou tentar uma nova instalação com um caminho inicial mais curto para verificar sua theroy em cerca de uma hora.

Questão lateral: não deveria haver mais dlls nesse caminho? Eu quero usar OpenMP e mkl com pytorch, não openblas ...

Se você quiser usar mkl, use conda, não pip

desculpe, use pip install intel-numpy not pip install numpy , mas você obterá 1.15.1 numpy . O Conda torna isso mais fácil e parece que você está usando o anaconda, então provavelmente ficar com o conda proporcionará uma experiência mais unificada.

Ok, encurtei meu PATH e ainda não está funcionando com "pip install numpy".
Isso é anexado ao meu PATH se eu "conda ativar o teste 37":
PATH = C: \ Usuários \ Nome.conda \ envs \ test37; C: \ Usuários \ Nome.conda \ envs \ test37 \ Biblioteca \ mingw-w64 \ bin; C: \ Usuários \ Nome.conda \ envs \ test37 \ Biblioteca \ usr \ bin; C: \ Users \ Name.conda \ envs \ test37 \ Library \ bin; C: \ Users \ Name.conda \ envs \ test37 \ Scripts; C: \ Users \ Name.conda \ envs \ test37 \ bin; ...

Meu PATH ainda é longo, mas não posso mais remover nada dele, porque outras ferramentas precisam dele como está.

Por que não há conda numpy 1.16.1?

Obrigado pela ajuda, cara!

(test37) D: \ test> pip install 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" me dá 1.15.4, que está funcionando bem.

@mattip MUITO OBRIGADO

Talvez devêssemos vincular estaticamente e aliviar a necessidade desse caminho mutilando

Esse problema de edição de PATH no numpy para versões mais recentes do python pode ter o mesmo motivo?
https://github.com/pytorch/pytorch/issues/4518#issuecomment-463224849 -> https://github.com/pytorch/pytorch/issues/17051

Também obtive o mesmo tipo de erro para o scipy. Depois de criar um env usando conda, tive que desinstalar usando pip e instalar usando conda para todos os pacotes que criaram um problema para mim. Isso funcionou para mim, embora não seja uma solução ideal, pois era uma operação muito manual.

@djdookie : apenas para saber o que funcionou e o que não funcionou. Você tem a dll em C:\Users\Name.conda\envs\test37\Lib\site-packages\numpy.libs . Incluir isso no PATH antes de iniciar o python funcionou. Você poderia tentar anexar isso ao final de PATH (com um separador ';') e testar se um numpy instalado por pip funciona (talvez em um novo ambiente conda, que mudaria o caminho)?

Editar: observe que o novo ambiente teria um caminho diferente para dll

Parece que este é um ananconda quebrado, veja este problema ContinuumIO / anaconda-issues # 10628

Fechando. O Anaconda parece ter corrigido o problema que causou isso.

Acabei de baixar a versão mais recente do conda do Windows para python3.7 para o Windows 7 e tive esse problema. Podemos reabrir?

Eu resolvo o problema. Era um problema de caminho porque eu estava usando o WingIDE. Usei essas instruções para consertar
https://wingware.com/blog/anaconda

Especificamente, abri o prompt de comando do anaconda e fiz "PATH" e copiei-o em meu caminho de asa para meu projeto.

Para referência, meu 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: \ Usuários \ xx \ AppData \ Local \ Continuum \ anaconda3 \ bin; C: \ Usuários \ xx \ AppData \ Local \ Continuum \ anaconda3 \ condabin;

Eu apenas fui até a pasta e excluí um. Isso parece ter consertado.

Isso também parece acontecer no Jupyter se você não "ativar" o ambiente que usará ANTES de iniciar o Jupyter.

E também acontece no VS Code se você não "conda ativar" o ambiente ANTES de iniciar o vs code. Se eu usar "código". no prompt do ambiente conda, ele funciona.

Isso também parece acontecer no Jupyter se você não "ativar" o ambiente que usará ANTES de iniciar o Jupyter.

Isso funcionou para mim. E o problema parece particularmente no laboratório Jupyter

Resolvi meus problemas de carregamento de DLL Numpy substituindo o Anaconda3 pelo WinPython.

Eu tenho esse problema com o WinPaython

Esta página foi útil?
0 / 5 - 0 avaliações