Как отладить интерактивные проблемы Google Code Jam на VSCode, используя python? - PullRequest
3 голосов
/ 26 апреля 2020

Я попытался загрузить пример интерактивной задачи проблема угадывания чисел . Они предлагают local testing tool на вкладке «Описание», решение python на вкладке «Анализ», interactive_runner.py , который запускает оба сценария одновременно.

После сохранения решения в solution.py, я могу успешно запустить это на оболочке с: python3 interactive_runner.py python3 local_testing_tool.py 0 -- python3 solution.py.

Проблема в том, что я не могу отладить его с помощью VSCode. Я попытался поместить все 3 файла в одну папку и использовать следующий запуск. json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Arquivo Atual",
            "type": "python",
            "request": "launch",
            "program": "interactive_runner.py python3 local_testing_tool.py 0 -- python3 ${file}",
            "console": "integratedTerminal",
        }
    ]
}

Когда я запускаю solutions.py с отладчиком, я получаю ошибку:

env DEBUGPY_LAUNCHER_PORT=40453 /home/user/.pyenv/versions/3.8.2/bin/python3.8 /home/user/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/launcher "interactive_runner.py python3 local_testing_tool.py 0 -- python3 /home/user/workspace/wargames/GoogleCodeJam/2018/PracticeSession/NumberGuessing/solution.py" 
Traceback (most recent call last):
  File "/home/user/.pyenv/versions/3.8.2/lib/python3.8/runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/home/user/.pyenv/versions/3.8.2/lib/python3.8/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/user/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/__main__.py", line 45, in <module>
    cli.main()
  File "/home/user/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/../debugpy/server/cli.py", line 430, in main
    run()
  File "/home/user/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/../debugpy/server/cli.py", line 267, in run_file
    runpy.run_path(options.target, run_name=compat.force_str("__main__"))
  File "/home/user/.pyenv/versions/3.8.2/lib/python3.8/runpy.py", line 262, in run_path
    code, fname = _get_code_from_file(run_name, path_name)
  File "/home/user/.pyenv/versions/3.8.2/lib/python3.8/runpy.py", line 232, in _get_code_from_file
    with io.open_code(fname) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'interactive_runner.py python3 local_testing_tool.py 0 -- python3 /home/user/workspace/wargames/GoogleCodeJam/2018/PracticeSession/NumberGuessing/solution.py'

Есть ли лучший подход, как это сделать?

1 Ответ

3 голосов
/ 29 апреля 2020

Аргумент "program" ожидает только путь к файлу, поэтому возникает ошибка, связанная с отсутствием "такого файла или каталога". То, что вы хотите сделать, это взять оставшуюся часть строки выполнения и сделать их аргументами:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Arquivo Atual",
            "type": "python",
            "request": "launch",
            "program": "interactive_runner.py",
            "console": "integratedTerminal",
            "args": ["python3", "local_testing_tool.py", "0", "--", "python3", "${file}"]  // Not sure if `${file}` will work here.
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...