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


88

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

Як / де я це можу зробити?

Відповіді:


142

Коментар @ 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, у каталозі мого поточного "Відкритого проекту". Я просто відредагував файл вручну, щоб додати, "cwd": "${fileDirname}"як показано вище.

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

Якщо у вас немає launch.jsonфайлу, спробуйте наступне :

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


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

1
Переконайтесь, що ви редагуєте правильний файл launch.json! З мого досвіду VS Code створює каталог .vscode у кожній папці проекту, яку я відкриваю. Якщо вчора ви відкрили батьківську папку /, а сьогодні відкрили батьківську / дочірню /, вам доведеться внести відповідні зміни.
chrisinmtown

44

Все, що вам потрібно зробити, це налаштувати параметр cwd у файлі launch.json таким чином:

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

Більше інформації про це можна знайти на офіційному веб-сайті VS Code docs .


Так, зробив це. Я бачу, що це насправді каталог .vscode, тому, думаю, мені потрібно додати \ .. до кінця, так?
користувач1443098

Так, внесе відповідні зміни
Дон,

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

тому що коли ми запускаємо наш додаток в режимі налагодження або запускаємо його зазвичай, нам слід починати з папки 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), там є маленька синя рухома лінія під випадаючим середовищем. Однак мій код ніколи не запускається. Думаю, мені чогось не вистачає. Що це?
користувач1443098

забудьте останні два, я зрозумів
user1443098

1
Наступна річ. Скориставшись пропозицією, я був здивований, побачивши, що $ {workspaceRoot} насправді не є коренем, а каталогом .vscode під коренем. Це як очікувалося? Якщо так, я можу встановити для cwd значення $ {workspaceRoot} \ .. (у вікнах anway)
user1443098

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.