DLL加载失败:找不到特定模块(VSCode,Numpy)

3
在使用 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) 在左下角的面板中(请参见剪辑)。 -- 简短的视频演示
要查看已启用的扩展列表和 settings.json 的内容,请参阅相关 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
@James Ctrl + Shift + P -> 选择解释器 -> Python 3.7.5 64位 ('vsc': conda) - OverLordGoldDragon
5个回答

9
根据您的评论,似乎VSCode没有激活conda环境。选择Python解释器会指向Python可执行文件(python.exe),但有时由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"
}

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


感谢您的回复;我按照您的指示尝试了一切,但不幸的是没有成功。我还尝试了从第二行中删除C:\\...,并用逗号进行分隔(难道不应该有一个吗?)- 但也没有成功。每次尝试时,我都将解释器指向了“base”,重新启动了VSC,然后再次指向了“vsc”。最后,您的第一行已经在我的“settings.json”中作为第一行,所以我就把它留在那里了。 - OverLordGoldDragon
同样的,就像终端一样,调试器也可以正常运行;问题可能围绕着代码运行扩展。 - OverLordGoldDragon
为你的努力点赞并排除了一个因素;在 Code Runner 的 Git 上开了一个 Issue(https://github.com/formulahendry/vscode-code-runner/issues/576),希望能在那里解决。 - OverLordGoldDragon
配置 settings.json 对我来说很有效。需要重新启动 VSCode,然后再次选择 conda Python 解释器。 - Aung Si Min Htet
这些的 MacOS 版本是什么? - Adam_G
@Adam_G,很抱歉,我没有Mac来测试这个。 - James

3

我曾经遇到过同样的问题。在我的情况下,Anaconda3和VS Code是分开安装的。以下是我采取的步骤,成功解决了这个问题:

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

现在它将在你的环境中找到numpy包路径。


2
以上的答案已经被VS Code弃用了。更现代的解决方案是通过添加以下内容来强制VS在运行独立的Code时激活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中隐藏。

它对我也有效。 - colin-zhou

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

enter image description here


0

如果您停用Code Runner扩展并确保使用VS Code的Python扩展选择适当的conda环境,则会出现绿色播放按钮而不是白色按钮。该绿色播放按钮将使用您选择的环境,因此应该已安装numpy。


我知道,但我更喜欢通过Code Runner或类似工具来运行它,以隐藏所有终端/执行消息,避免控制台(包括IPython)被淹没。 - OverLordGoldDragon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接