首页 > 解决方案 > CONDA Base Env 加载错误/NUMPY: ImportError: DLL load failed

问题描述

刚刚安装了 minicondaC:\Anaconda 3并运行conda install numpy了 Anaconda shell(默认为 conda base 作为 env)。

如果我运行 Anaconda 命令提示符并键入python >> import numpyall 工作正常。

如果我打开一个普通的命令窗口并c:\Anaconda3运行python >> import numpy它会失败(下面的错误)。

我已经检查过了sys.path,它们在两个 CMD 窗口上都是一样的。唯一的解决方案是在正常的 CMD 窗口上运行:c:\Anaconda3\Scripts\conda activate base然后运行python >> import numpy​​.

我过去安装过没有这个问题的 Miniconda,所以我很惊讶突然不得不激活环境。我认为默认情况下会加载基本环境,但似乎情况并非如此,我必须强制这样做。

我得到的错误是:

>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\Anaconda3\lib\site-packages\numpy\__init__.py", line 140, in <module>

    from . import _distributor_init
  File "c:\Anaconda3\lib\site-packages\numpy\_distributor_init.py", line 34, in
<module>
    from . import _mklinit
ImportError: DLL load failed: The specified module could not be found.

我发现我可以从命令行运行:C:\Anaconda3\python.exe C:\Anaconda3\cwp.py C:\Anaconda3 C:\Anaconda3\python.exe然后运行import numpy,这样就可以了。cwp.py 文件如下:

# this script is used on windows to wrap shortcuts so that they are executed within an environment
#   It only sets the appropriate prefix PATH entries - it does not actually activate environments

import os
import sys
import subprocess
from os.path import join, pathsep

from menuinst.knownfolders import FOLDERID, get_folder_path, PathNotFoundException

# call as: python cwp.py PREFIX ARGs...

prefix = sys.argv[1]
args = sys.argv[2:]

new_paths = pathsep.join([prefix,
                         join(prefix, "Library", "mingw-w64", "bin"),
                         join(prefix, "Library", "usr", "bin"),
                         join(prefix, "Library", "bin"),
                         join(prefix, "Scripts")])
env = os.environ.copy()
env['PATH'] = new_paths + pathsep + env['PATH']
env['CONDA_PREFIX'] = prefix

documents_folder, exception = get_folder_path(FOLDERID.Documents)
if exception:
    documents_folder, exception = get_folder_path(FOLDERID.PublicDocuments)
if not exception:
    os.chdir(documents_folder)
sys.exit(subprocess.call(args, env=env))

PS:如果你想知道“如果你可以简单地激活基地,为什么需要这个”?例如,当使用 xlwings 时,脚本会调用 python.exe(无需先激活环境,即使我认为在根文件夹上使用 python.exe 意味着您不需要激活基本环境)。这很麻烦,因为我在尝试加载 numpy 时遇到错误。

谢谢!

标签: pythonanacondacondaenvironment

解决方案


这是一个DLL错误。由于缺少DLL文件引起的。从这里下载文件

转到 C:/windows/system32 和 /Windows/SysWOW64 文件夹。只需粘贴这些文件

如果被问到只需替换文件


推荐阅读