Отладка pytest unitest в vscode приводит к тому, что AttributError sys не имеет атрибута __breakpointhook__ при выходе

1

Я использую Visual Studio код 1.27.2 на Ubuntu 18.04 и Anaconda версии 4.5.10 для управления моими виртуальными средами.

У меня есть версии Anaconda и python, установленные в vscode.

Я сделал простой тест, используя виртуальную среду, в которой я установил pytest и pylint для python 3.6.

Если я запустил этот простой скрипт:

import pytest

def test_test():
    assert True == True

Visual Studio Code отлично выполняет тесты и отображает результаты в выходной консоли.

Однако, если я пытаюсь отлаживать этот скрипт, тест запускается и после выхода я получаю атрибут AttributeError. У sys нет атрибута __breakpointhook__, и я не понимаю, почему? Я делаю что-то неправильно? Является ли это ошибкой с отладчиком Visual Studio Code или интеграцией с pytest?

Трассировки стека:

File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/__main__.py", line 211, in <module> singlesession=args.single_session)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/__main__.py", line 205, in main debug_main(addr, name, kind, *extra, **kwargs)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_local.py", line 28, in debug_main run_module(address, name, *extra, **kwargs)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_local.py", line 53, in run_module run(argv, addr, **kwargs)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_local.py", line 125, in _run _pydevd.main()
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_vendored/pydevd/pydevd.py", line 1743, in main debugger.connect(host, port)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_vendored/pydevd/pydevd.py", line 1099, in run return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
File "/home/leerro/.vscode/extensions/ms-python.python-2018.8.0/pythonFiles/experimental/ptvsd/ptvsd/_vendored/pydevd/pydevd.py", line 1123, in _exec runpy._run_module_as_main(module_name, alter_argv=False)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pytest.py", line 77, in <module> raise SystemExit(pytest.main())
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/config/__init__.py", line 67, in main return config.hook.pytest_cmdline_main(config=config)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/hooks.py", line 258, in __call__ return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/manager.py", line 67, in _hookexec return self._inner_hookexec(hook, methods, kwargs)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/manager.py", line 61, in <lambda> firstresult=hook.spec_opts.get('firstresult'),
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/callers.py", line 201, in _multicall return outcome.get_result()
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/callers.py", line 76, in get_result raise ex[1].with_traceback(ex[2])
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/pluggy/callers.py", line 180, in _multicall res = hook_impl.function(*args)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/main.py", line 208, in pytest_cmdline_main return wrap_session(config, _main)
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/main.py", line 203, in wrap_session config._ensure_unconfigure()
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/config/__init__.py", line 611, in _ensure_unconfigure fin()
File "/home/leerro/anaconda3/envs/py36TF/lib/python3.6/site-packages/_pytest/debugging.py", line 67, in fin sys.breakpointhook = sys.__breakpointhook__
AttributeError: module 'sys' has no attribute '__breakpointhook__'

Настройки рабочей области:

{
    "python.unitTest.pyTestEnabled": true,
    "python.unitTest.unittestEnabled": false,
    "python.unitTest.nosetestsEnabled": false,
    "python.unitTest.autoTestDiscoverOnSaveEnabled": true,
    "python.pythonPath": "/home/gabriel/anaconda3/envs/pytestenv/bin/python"
}

Я попытался запустить его из сеанса отладки, используя эту конфигурацию в launch.json, но он дает мне ту же трассировку стека и ошибку.

{
     "name": "Debug Pytest",
     "type": "python",
     "request": "launch",
     "stopOnEntry": false,
     "pythonPath": "${config:python.pythonPath}",
     "module": "pytest",
     "envFile": "${workspaceFolder}/.env",
     "console": "integratedTerminal",
}

Я как бы потерялся здесь и не знаю, где искать дальше. Конечно, я все еще могу отлаживать свой код, поскольку только при выходе происходит исключение, но я нахожу его тревожным, и я не знаю, является ли это проблемой с кодом Visual Studio или с моими конфигурациями.

Любая помощь будет принята с благодарностью!

Теги:
visual-studio-code
visual-studio-debugging
pytest

1 ответ

3
Лучший ответ

Это ошибка в ptvsd, которая будет исправлена в следующей версии, которая будет включена в следующую версию расширения Python для VS Code.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню