VSCode - как установить рабочий каталог для отладки


88

Я начинаю использовать vscode для Python. У меня есть простая тестовая программа. Я хочу запустить его в режиме отладки, и мне нужно установить рабочий каталог для запуска.

Как / где мне это сделать?

Ответы:


141

Комментарий @ SpeedCoder5 заслуживает того, чтобы быть ответом;

В частности, вы можете указать динамический рабочий каталог; (т.е. в любом каталоге, где находится текущий открытый файл Python), используя"cwd": "${fileDirname}"

Если вы используете эту Python: Current File (Integrated Terminal)опцию при запуске Python, ваш launch.jsonфайл может выглядеть как мой, как показано ниже.

{
    "version": "0.2.0",
    "configurations": [
    {
            "name": "Python: Current File (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${fileDirname}"
    }, 

    //... other settings, but I modified the "Current File" setting above ...
}

[Помните, что launch.jsonфайл управляет настройками запуска / отладки вашего проекта кода Visual Studio] [1]; мой launch.jsonфайл был автоматически сгенерирован VS Code в каталоге моего текущего «Open Project». Я просто отредактировал файл вручную, чтобы добавить, "cwd": "${fileDirname}"как показано выше.

Помните, что launch.jsonфайл может относиться к вашему проекту или к вашему каталогу, поэтому убедитесь, что вы редактируете правильный launch.json (см. Комментарий)

Если у вас нет launch.jsonфайла, попробуйте следующее :

Чтобы создать файл launch.json, откройте папку проекта в VS Code («Файл»> «Открыть папку»), а затем щелкните значок «Настроить шестеренку» на верхней панели представления отладки. [1]: https://code.visualstudio.com/docs/editor/debugging#_launch-versus-attach-configurations


6
Есть ли способ установить это значение по умолчанию для всех конфигураций?
Сергей

1
Убедитесь, что вы редактируете правильный файл launch.json! По моему опыту, VS Code создает каталог .vscode в каждой папке проекта, которую я открываю. Если вчера вы открыли папку parent /, а сегодня открыли папку parent / child /, вам нужно будет внести соответствующие изменения.
chrisinmtown,

44

Все, что вам нужно сделать, это настроить параметр cwd в файле launch.json следующим образом:

{
    "name": "Python",
    "type": "python",
    "pythonPath":"python", 
    ....
    "cwd": "<Path to the directory>"
    ....
}

Более подробную информацию об этом можно найти на официальном сайте документации VS Code .


Ага, сделал это. Я вижу, что на самом деле это каталог .vscode, поэтому мне кажется, мне нужно добавить \ .. в конец, верно?
user1443098

Да, внесу соответствующие поправки в ответ
Дон

17
"cwd": "${fileDirname}"для запуска в текущем каталоге файла с открытым исходным кодом
SpeedCoder5

16

Этот параметр мне помогает:

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "cwd": "${workspaceFolder}\\app\\js", // set directory here
  "program": "${workspaceFolder}\\app\\js\\server.js", // set start js here
}

9

В некоторых случаях также может быть полезно установить PYTHONPATHвместе с workspaceFolder:

{
    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "cwd": "${workspaceFolder}",
    "env": {
        "PYTHONPATH": "${cwd}"
    }
}


3

Я публикую этот образец конфигурации для людей, которые используют TypeScript на Node.js

в моем проекте мои файлы TypeScript сервера Node.js находятся в папке Application_ts, а скомпилированные файлы js создаются в папке с именем Application

потому что, когда мы запускаем наше приложение в режиме отладки или запускаем его обычно, мы должны начать с папки приложения, которая содержит файлы js, поэтому ниже конфигурация запускает отладку из корневой папки, где мой application_ts также существует и отлично работает

{
  "version": "0.2.0",
  "configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "Debug TypeScript in Node.js",
        "program": "${workspaceRoot}\\Application\\app.js",
        "cwd": "${workspaceRoot}\\Application",
        "protocol": "inspector",
        "outFiles": [],
        "sourceMaps": true
    },        
    {
        "type": "node",
        "request": "attach",
        "name": "Attach to Process",
        "port": 5858,
        "outFiles": [],
        "sourceMaps": true
    }
 ]
}

1

Вы можете настроить текущий рабочий каталог для отлаженной программы, используя cwdаргумент вlaunch.json


Супер! Перешел к следующему шагу. Теперь пытаемся запустить программу в режиме отладки. вот код: print (os.getcwd ())
user1443098

Супер! Перешел к следующему шагу. У меня есть однострочный: print (os.getcwd ()), который я хочу отладить. Я нажимаю на значок отладки (или нажимаю F5). Под выпадающим списком «Среда» появляется небольшая синяя движущаяся линия. Однако мой код никогда не запускается. Думаю, я что-то упускаю. Что бы это было?
user1443098

забудь
про

1
Следующее. Воспользовавшись этим предложением, я был удивлен, увидев, что $ {workspaceRoot} на самом деле был не корневым, а каталогом .vscode под корнем. Это как ожидалось? Если это так, я могу установить cwd равным $ {workspaceRoot} \ .. (сейчас в Windows)
user1443098

0

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

Файл> Настройки> Настройки> Python> Наука о данных> Выполнить в файловом каталоге

Спасибо, brch: Python в VSCode: каждый раз устанавливайте рабочий каталог на путь к файлу python

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.