vscode中activate切换虚拟环境出错:DLL load failed找不到指定的模块

问题背景

在vscode中切换虚拟环境的时候总是出错,找不到模块。比如我的电脑中有一个叫torch6的anaconda环境,里边安装了pytorch。我的base环境下有numpy,但是没有pytorch。此时,打开vscode,新建一个py文件,写了某段程序:

import os
import numpy as np
import torch
#...

然后在左下方选择解释器为“Python 3.6.9 64-bit (‘torch6’:conda)”,按F5运行该py文件。如果当前文件夹下没有launch.json的话,会提示你创建一个,选python那个创建json文件,创建了之后不编辑其中的内容直接保存,再次按F5运行该py文件,就会开始运行该脚本。

发现出错了!

但是运行出错了,发现在第三行import torch这里报错(DLL load failed找不到指定的模块)。按F5运行程序时,在终端中会出现这么一条命令:

f:; cd ‘当前文件夹路径’; & ‘E:\Anaconda3\envs\torch6\python.exe’…,

看命令里也提到了envs\torch6\python.exe,好像是调用了torch6环境的解释器,但是为什么报错呢?

思考

numpy没报错,但是torch报错了,说明虚拟环境加载有问题。如果torch6环境成功加载了的话,导入pytorch的包的时候是不应该报错的。也就是说,命令里调用了envs\torch6\python.exe解释器,并不代表torch6环境的成功加载。

后来发现,导致这一问题的原因可能是,加载虚拟环境的activate语句并没有执行成功。在vscode中切换虚拟环境后,按F5运行程序时,都会出现一个“activate xxx”,以激活某一虚拟环境。如果没有运行这一条,即便是调用的某一env下的解释器(如envs\torch6\python.exe),也无法载入该解释器中的包(如torch6环境下的pytorch)。

愁死了。。怎么解决?

在系统变量的PATH一项中,为电脑添加如下的环境变量:
E:\Anaconda3\envs\torch6\Library\bin
E:\Anaconda3\envs\torch6\Scripts
E:\Anaconda3
然后重启vscode,发现居然好了。。。不知道是哪个命令的功劳。。

现在呢?

加完了环境变量以后运行就没问题了。。

一点想法

环境变量应该是有用的,如果发现不行,可能环境变量写的不对。
另外有人说采用cmd做终端(默认的是powershell),这个我试了但是不行。个人感觉这是个很复杂的问题,涉及了环境变量、anaconda、vscode、cmd等多个方面。如果你之前捣鼓过你的电脑,导致你的电脑在其中某一方面的配置和其他人的电脑不一样,可能这个方法就不太好用。这种情况比较少见,因为大部分网上的方法效果还是不错的,但是如果出现了这种问题,那也没办法,只能自己摸索着调整电脑的环境。。。

你可能感兴趣的:(python踩坑,pytorch,python,vscode,anaconda)