неверный синтаксис при передаче «args»: «...» в VSCode с Pythonq - PullRequest
0 голосов
/ 20 апреля 2020

Я следую приведенным ниже инструкциям при передаче аргумента командной строки в скрипт python, который я отлаживаю

https://github.com/Microsoft/vscode/issues/28059

Обычно я запускаю скрипт с аргументом dir, для которого не требуется префикс dir

Например: python script.py c:\output_folder запускает скрипт и устанавливает c:\output_folder в качестве переменной dir

Итак, следуйте указаниям онлайн У меня есть следующее в launch.json файле

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "preLaunchTask": "shellCommand",
            "console": "integratedTerminal",
            "args": ["c:\\output_folder"]
        }
    ]
}

При попытке отладки файла python в VS Code я получаю эту ошибку:

Traceback (most recent call last):
  File "C:\python\portablepython\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\python\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "c:\Users\Admin\.vscode\extensions\ms-python.python-2020.3.71659\pythonFiles\lib\python\debugpy\wheels\debugpy\__main__.py", line 45, in <module>
    cli.main()
  File "c:\Users\Admin\.vscode\extensions\ms-python.python-2020.3.71659\pythonFiles\lib\python\debugpy\wheels\debugpy/..\debugpy\server\cli.py", line 429, in main
    run()
  File "c:\Users\Admin\.vscode\extensions\ms-python.python-2020.3.71659\pythonFiles\lib\python\debugpy\wheels\debugpy/..\debugpy\server\cli.py", line 266, in run_file
    runpy.run_path(options.target, run_name=compat.force_str("__main__"))
  File "C:\python\lib\runpy.py", line 261, in run_path
    code, fname = _get_code_from_file(run_name, path_name)
  File "C:\python\lib\runpy.py", line 236, in _get_code_from_file
    code = compile(f.read(), fname, 'exec')
  File "C:\code\.vscode\launch.json", line 2
    // Use IntelliSense to learn about possible attributes.
     ^
SyntaxError: invalid syntax

Это явно дает ошибка на launch.json, поэтому я знаю, что ее нет в python скриптах

Почему строка "args" не работает в launch.json?

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Поскольку вы установили "program": "${file}", это означает, что отладчик запустит файл, который вы в данный момент открыли. По результатам трассировки кажется, что вы запускаете отладчик с launch.json открытым в качестве текущего файла. Переключитесь на файл, который вы хотите отладить, и он должен работать нормально.

0 голосов
/ 20 апреля 2020

Вопрос. Почему вы предполагаете, что именно «args» вызывает проблему? Самая последняя строка в трассировке дает вам довольно четкое описание проблемы и даже выводит строку, вызывающую ошибку, с помощью каретки, указывающей на позицию в строке, где произошла ошибка. Хотя я не очень знаком с vscode, JSON spe c не определяет синтаксис комментариев. Я предполагаю, что приложение пытается проанализировать строку

// Use IntelliSense to learn about possible attributes.

как JSON. И поскольку он недействителен JSON, он выдает ошибку. Если это так, две строки непосредственно под этой будут представлять ту же проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...