Windows10下如何让VSCode运行pytest时正确激活Conda环境?
解决VSCode测试模块运行pytest时无法加载Conda环境DLL的问题
我之前也碰到过一模一样的情况——VSCode能正常激活Conda环境跑代码,但用测试模块跑pytest就报ImportError: DLL load failed,可在命令行激活环境后跑pytest却完全正常。核心原因是VSCode的测试运行器没完全继承Conda环境设置的系统环境变量(尤其是Windows的PATH),导致依赖的动态链接库找不到。下面是几个亲测有效的解决办法:
方法1:直接指定Conda环境内的pytest路径
这是最直接的方式,让VSCode测试模块用目标环境里的pytest,而非全局或路径错误的版本:
- 打开VSCode设置(快捷键
Ctrl+,) - 搜索
python.testing.pytestPath - 将其值设为你的
sqlite_test环境下pytest.exe的完整路径,比如:
要是不知道路径,激活C:\Users\你的用户名\anaconda3\envs\sqlite_test\Scripts\pytest.exesqlite_test环境后输入where pytest就能查到。
方法2:配置VSCode继承Conda环境的PATH
有时候问题出在DLL所在路径没被加到测试进程的PATH里,Conda激活环境时会自动把Library/bin目录加入PATH,但VSCode测试进程可能没获取到这个设置:
- 在项目的
.vscode文件夹下创建或打开settings.json - 添加以下配置:
这里的{ "python.pythonPath": "C:\\Users\\你的用户名\\anaconda3\\envs\\sqlite_test\\python.exe", "python.testing.pytestEnabled": true, "terminal.integrated.env.windows": { "PATH": "${env:CONDA_PREFIX}\\Library\\bin;${env:PATH}" }, "python.testing.pytestPath": "${env:CONDA_PREFIX}\\Scripts\\pytest.exe" }${env:CONDA_PREFIX}会自动对应你当前选中的Conda环境根目录,不用手动写死路径。
方法3:让测试运行器在集成终端中执行
另一种思路是让VSCode的测试模块在已激活Conda环境的集成终端里运行,这样环境变量就和命令行完全一致:
- 打开设置,搜索
python.testing.pytestExecution - 将其值设为
terminal(默认是testAdapter) - 重启VSCode后再运行测试,此时测试会在集成终端里执行,自动激活
sqlite_test环境,和你手动在命令行跑的环境完全相同。
试完上面任意一种方法,应该就能解决DLL加载失败的问题了。我当时用的是方法2,一次就成功了。
内容的提问来源于stack exchange,提问作者ThwompWamp
相关产品推荐
相关产品推荐

