Ошибка импорта при использовании launch.js для отладки python в многокорневой рабочей области

#python #visual-studio-code #configuration

#питон #visual-studio-код #конфигурация

Вопрос:

У меня есть эта задача в моем launch.json каталоге в моем проекте:

 {  "name": "Api",  "type": "python",  "request": "launch",  "python": "${command:python.interpreterPath}",  "module": "myservice.api",  "env": {  "GEVENT_SUPPORT": "True",  "OBJC_DISABLE_INITIALIZE_FORK_SAFETY": "YES",  } }  

Когда я открываю каталог в VSCode, я могу запустить процесс отладки без проблем. Я просто выбираю интерпретатор python из своего venv, и все работает.

Когда я открываю ту же самую папку в многокорневой рабочей области, она не может импортировать gevent при отладке:

 ❯ cd /Users/myself/Workspace/git/software/myservice ; /usr/bin/env /Users/myself/Workspace/git/software/myservice/venv/bin/python /Users/myself/.vscode/extensions/ms-python.python-2021.11.1422169775/pythonFiles/lib/python/debugpy/launcher 54265 -- -m myservice.api E 00000.023: Error determining module path for sys.argv    Traceback (most recent call last):  File "/Users/myself/.vscode/extensions/ms-python.python-2021.11.1422169775/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 303, in run_module  spec = find_spec(target_as_str)  File "/usr/local/Cellar/python@3.9/3.9.7_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/util.py", line 94, in find_spec  parent = __import__(parent_name, fromlist=['__path__'])  File "/Users/myself/Workspace/git/software/myservice/myservice/__init__.py", line 1, in lt;modulegt;  import gevent.monkey  ModuleNotFoundError: No module named 'gevent'    Stack where logged:  File "/usr/local/Cellar/python@3.9/3.9.7_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main  return _run_code(code, main_globals, None,  File "/usr/local/Cellar/python@3.9/3.9.7_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code  exec(code, run_globals)  File "/Users/myself/.vscode/extensions/ms-python.python-2021.11.1422169775/pythonFiles/lib/python/debugpy/__main__.py", line 45, in lt;modulegt;  cli.main()  File "/Users/myself/.vscode/extensions/ms-python.python-2021.11.1422169775/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 444, in main  run()  File "/Users/myself/.vscode/extensions/ms-python.python-2021.11.1422169775/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 309, in run_module  log.swallow_exception("Error determining module path for sys.argv")  File "/Users/myself/.vscode/extensions/ms-python.python-2021.11.1422169775/pythonFiles/lib/python/debugpy/../debugpy/common/log.py", line 218, in swallow_exception  _exception(format_string, *args, **kwargs)    

Странно то, что я запускаю это в командной строке вручную:

 cd /Users/myself/Workspace/git/software/myservice ; OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES /usr/bin/env /Users/myself/Workspace/git/software/myservice/venv/bin/python -m myservice.api  

Тогда все будет работать так, как ожидалось. То же самое, если я выполняю отладку в рабочей области с одной папкой.

Есть ли способ исправить файл launch.json, чтобы отладка python работала в VSCode? Есть ли что-нибудь очевидное, чего мне не хватает?

Я на macOS, я установил python с помощью brew.