首页 > 解决方案 > 运行 pytest 时如何让 VSCode 正确激活 conda?

问题描述

在 Windows 10 上使用 Anaconda 和 VSCode 时,VSCode 调试器会在我运行/调试时正确激活环境。但是当我使用测试模块时,它失败了。

这是一个示例设置:

我使用以下命令创建环境:conda create -n sqlite_test python=3.7.3

我的文件夹设置如下:

./src/
  sql.py
  test_sql.py

我打开一个新的 VSCode 窗口,然后打开src文件夹。

sql.py 的源代码是:

import sqlite3
import os

def do_sql():
    db_path = os.path.join(os.environ['TEMP'], 'test.db')
    conn = sqlite3.connect(db_path)

    print("SQL code ran successfully")
    return True


do_sql()

test_sql.py 的源代码是:

import pytest
from sql import do_sql

def test_do_sql():
    assert do_sql()

在 VSCode 中,我在我的sqlite_testConda 环境中选择了 python 解释器。

如果我只运行 sql.py,则不会出现任何错误,并且 print 语句会打印到控制台。

如果我使用 VSCode 从 pytest 运行测试(VSCodesqlite_test使用 Pip 将 pytest 安装到环境中),则会收到以下错误:

________________________ ERROR collecting test_sql.py _________________________
ImportError while importing test module 'c:\Users\UserName\Documents\src\tmp\sqllite\test_sql.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test_sql.py:2: in <module>
    from sql import do_sql
sql.py:1: in <module>
    import sqlite3
..\..\..\..\Anaconda3\envs\sqllite\lib\sqlite3\__init__.py:23: in <module>
    from sqlite3.dbapi2 import *
..\..\..\..\Anaconda3\envs\sqllite\lib\sqlite3\dbapi2.py:27: in <module>
    from _sqlite3 import *
E   ImportError: DLL load failed: The specified module could not be found.
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!

如果我从命令行运行 pytest(激活我的 conda 环境),我会成功通过测试:

>pytest
================================================= test session starts =================================================
platform win32 -- Python 3.7.3, pytest-5.0.1, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\UserName\Documents\src\tmp\sqllite
collected 1 item

test_sql.py .                                                                                                    [100%]

============================================== 1 passed in 0.04 seconds ===============================================

标签: pythonvisual-studio-codeconda

解决方案


原来这是一个已知的错误:https ://github.com/microsoft/vscode-python/issues/4300


推荐阅读