【问题标题】:DLL load failed: The specific module could not be found (VSCode, Numpy)DLL 加载失败:找不到指定的模块(VSCode、Numpy)
【发布时间】:2020-04-18 12:30:32
【问题描述】:

import numpy as np 发生错误;命令在终端中直接输入时可以正常工作,但在通过Code Runner 运行时会失败。我在下面重现的步骤。

import sys; print(sys.version) 的输出是3.7.5 (default, Oct 31 2019, 15:18:51) [MSC v.1916 64 bit (AMD64)]。 VSCode 显示它正在运行预期的 Python 解释器:Python 3.7.5 64-bit ('vsc': conda) 在左下窗格(见剪辑)。 -- 简介video demo

有关settings.json 的已启用扩展和内容的完整列表,请参阅relevant Git

问题是什么,如何解决?


环境信息:Windows 10 x64、Anaconda 10/19(虚拟环境)、VSCode 1.41.1


重现步骤:

conda create --name vsc
conda activate vsc
conda install python==3.7.5
conda install numpy
# in VSCode: import numpy as np, etc

完整追溯

Traceback (most recent call last):
  File "D:\Anaconda\envs\vsc\lib\site-packages\numpy\core\__init__.py", line 17, in <module>
    from . import multiarray
  File "D:\Anaconda\envs\vsc\lib\site-packages\numpy\core\multiarray.py", line 14, in <module>
    from . import overrides
  File "D:\Anaconda\envs\vsc\lib\site-packages\numpy\core\overrides.py", line 7, in <module>
    from numpy.core._multiarray_umath import (
ImportError: DLL load failed: The specified module could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Desktop\School\Python\vscode\HelloWorld\app.py", line 1, in <module>
    import numpy as np
  File "D:\Anaconda\envs\vsc\lib\site-packages\numpy\__init__.py", line 142, in <module>
    from . import core
  File "D:\Anaconda\envs\vsc\lib\site-packages\numpy\core\__init__.py", line 47, in <module>
    raise ImportError(msg)
ImportError: 

编辑:根据 James 的建议将以下内容添加到 settings.json

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
"terminal.integrated.shellArgs.windows": ["/K", "D:\\Anaconda\\Scripts\\activate.bat D:\\Anaconda"],
"python.condaPath": "D:\\Anaconda\\Scripts\\conda.exe"

【问题讨论】:

  • 你是如何将 VSCode 指向 conda 环境的?
  • @James Ctrl + Shift + P -&gt; Python: Select Interpreter -&gt; Python 3.7.5 64-bit ('vsc': conda)

标签: python numpy visual-studio-code anaconda


【解决方案1】:

根据您的评论,VSCode 似乎没有激活 conda 环境。选择 Python 解释器会将 VSCode 指向 Python 可执行文件 (python.exe),但有时由 Conda 设置的环境变量用于告诉具有大型后端的包在哪里查找已编译的二进制文件。

Conda 这样做是为了节省空间。如果您已经在一个环境中拥有 DLL,它有时会在创建新环境时链接到它们,而不是再次安装它们。因此,我们的目标是让 VSCode 以与通过“开始”菜单使用它相同的方式使用 Conda:在启动 Python 之前启动 Anaconda 命令提示符。

在 VSCode 中,使用以下操作打开您的 settings.json 文件进行编辑:

(type)               CTRL + SHIFT + P
(search for:)        open settings
(click:)             Preferences: Open Settings (JSON)

我们将在 JSON 文件中添加 3 行。第一个告诉 VSCode 使用 Windows 集成 shell。第二个在启动每次运行的 Windows Shell 时添加额外的参数;这是我们将激活基本 Conda 环境的地方。 (这只是从 Anaconda 命令提示符快捷方式属性中复制/粘贴的。)第三行允许 VSCode 放置您的 Conda 可执行文件,以便它可以正确更改环境。

我的 Anaconda 基础环境位于 C:\Anaconda3\。您需要修改安装路径。

settings.json
{
    ... # any other settings you have already added (remove this line)

    "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
    "terminal.integrated.shellArgs.windows": ["/K", "C:\\Anaconda3\\Scripts\\activate.bat C:\\Anaconda3"],
    "python.condaPath": "C:\\Anaconda3\\Scripts\\conda.exe"
}

保存文件,将解释器更改为base conda 环境,重新启动VSCode,再次将解释器更改为vsc

【讨论】:

  • 感谢您的回复;跟随一切,不幸的是没有工作。我还尝试从第 2 行删除第二个 C:\\...,并用逗号分隔它(不应该有一个吗?) - 也没有工作。每次尝试时,我将解释器指向base,重新启动VSC,然后再次指向vsc。最后,您的第一行已经在我的settings.json 中作为第一行,所以我把它留在那里。
  • 另外,就像终端一样,调试器运行fine;问题可能与代码运行器扩展有关
  • 赞成努力并排除了一个因素;在 Code Runner git 上打开 Issue,希望它在那里解决
  • 配置 settings.json 对我来说效果很好。需要重启VSCode,然后再次选择conda Python解释器。
  • MacOS 版本是什么?
【解决方案2】:

如果您停用 Code Runner 扩展并确保使用 Python extension for VS Code 选择适当的 conda 环境,您将获得一个绿色的播放按钮,而不是白色的。该绿色播放按钮将使用您选择的环境,因此应该安装 numpy。

【讨论】:

  • 我知道,但我更喜欢通过 Code Runner 或类似方式运行它,以隐藏所有使控制台混乱的终端/执行消息(也包括 IPython)
【解决方案3】:

我遇到了同样的问题。在我的例子中,Anaconda3 和 VS Code 是分开安装的。以下是我解决问题的步骤:

  • 完全卸载 VS Code,包括任何用户设置/缓存和开始菜单条目
  • 从 Anaconda Navigator 重新安装 VS Code
  • 启动 Anaconda Prompt 并通过conda activate myenv激活我想使用的任何环境
  • 通过键入code 从 Anaconda Prompt 启动 VS Code

它现在会在您的环境中找到numpy 包路径。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,我已通过在设置中添加 Python.CondaPath 来解决它。按Ctrl + Shift + P 并选择终端配置。例如,搜索 python.conda,然后粘贴您的 conda 路径。 C:\ProgramData\Anaconda3\Scripts\conda.exe

    这将解决您的问题。

    【讨论】:

      【解决方案5】:

      上面的答案正在被 VS Code 贬值。更现代的解决方案是通过添加以下内容来强制 VS 在独立运行代码时激活 Anaconda:

      "python.condaPath": "C:\\ProgramData\\Anaconda3\\Scripts\\conda.exe",
      "python.terminal.activateEnvironment": true,
      "terminal.integrated.defaultProfile.windows": "Command Prompt"
      

      到目前为止,这对我有用。请注意,这不适用于:

      "python.terminal.launchArgs": ["-m", "IPython"],
      

      所以请确保它没有隐藏在您的 settings.json 中。

      【讨论】:

      • 它也适用于我
      猜你喜欢
      • 2018-08-13
      • 2020-02-15
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 2018-05-01
      相关资源
      最近更新 更多