DLL LOAD FAILED && MKL-SERVICE PACKAGE FAILED TO IMPORT
(我觉得可能只有windows下有这问题)
好长时间了,在vscode搭配anaconda写python的时候,只要import numpy,就会随机出现这样的错误:
import numpy
E:\installed\Anaconda3\lib\site-packages\numpy_init_.py:140: UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring its correct out-of-the box operation under condition when Gnu OpenMP had already been loaded by Python process is not assured. Please install mkl-service package, see http://github.com/IntelPython/mkl-service
from . import distributor_init
Traceback (most recent call last):
File "E:\installed\Anaconda3\lib\site-packages\numpy\core_init.py", line 24, in
from . import multiarray
File "E:\installed\Anaconda3\lib\site-packages\numpy\core\multiarray.py", line 14, in
from . import overrides
File "E:\installed\Anaconda3\lib\site-packages\numpy\core\overrides.py", line 7, in
from numpy.core._multiarray_umath import (
ImportError: DLL load failed: 找不到指定的模块。
有时候好,有时候就是不行,完全随机,这次决定好好想想这个问题。
vscode是这么运行python文件的:
& D:/Coding/miniconda3/envs/data/python.exe d:/Coding/python_work/test.py
可见只是用选择的环境下的python程序执行,但并没有将这个环境下的package目录作为环境变量添加,所以有些package找不到
所以,大家搜索解决方案中,绝大多数都告诉你,要把anaconda的scripts, bin, 根目录添加进环境变量。但这样不治本,因为这样添加的只是base环境,不可能把每个虚拟环境都添加进环境变量。
做了做实验验证了这种猜想:
- 在激活环境的终端里,进入python命令行,
import numpy
完全没问题。 - vscode中终端激活环境,手动运行python文件,没问题。
我的解决方案是:在你项目目录中打开终端,先激活相应的环境,再输入code .
打开vscode,注意后面有一个.
这时,看下vscode中的终端,已经自动激活了相应环境,再运行就没问题了。