VSCode - Festlegen des Arbeitsverzeichnisses für das Debuggen


88

Ich fange an, vscode für Python zu verwenden. Ich habe ein einfaches Testprogramm. Ich möchte es unter Debug ausführen und muss das Arbeitsverzeichnis für den Lauf festlegen.

Wie / wo mache ich das?

Antworten:


142

Der Kommentar von @ SpeedCoder5 verdient eine Antwort.

Insbesondere können Sie ein dynamisches Arbeitsverzeichnis angeben. (dh in welchem ​​Verzeichnis sich die aktuell geöffnete Python-Datei befindet), mit"cwd": "${fileDirname}"

Wenn Sie die Python: Current File (Integrated Terminal)Option verwenden, wenn Sie Python ausführen, launch.jsonsieht Ihre Datei möglicherweise wie die folgende aus.

{
    "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 ...
}

[Denken Sie daran, dass die launch.jsonDatei die Ausführungs- / Debug-Einstellungen Ihres Visual Studio-Codeprojekts steuert] [1]; Meine launch.jsonDatei wurde automatisch von VS Code im Verzeichnis meines aktuellen "Open Project" generiert. Ich habe die Datei nur manuell bearbeitet, um sie "cwd": "${fileDirname}"wie oben gezeigt hinzuzufügen .

Denken Sie daran, dass die launch.jsonDatei möglicherweise projektspezifisch oder verzeichnisspezifisch ist. Vergewissern Sie sich daher, dass Sie die richtige Datei bearbeiten launch.json(siehe Kommentar).

Wenn Sie keine launch.jsonDatei haben, versuchen Sie Folgendes :

Um eine Datei launch.json zu erstellen, öffnen Sie Ihren Projektordner in VS Code (Datei> Ordner öffnen) und wählen Sie dann das Symbol Zahnrad konfigurieren in der oberen Leiste der Debug-Ansicht. [1]: https://code.visualstudio.com/docs/editor/debugging#_launch-versus-attach-configurations


6
Gibt es eine Möglichkeit, dies als Standardeinstellung für alle Konfigurationen festzulegen?
Serhiy

1
Stellen Sie sicher, dass Sie die richtige Datei launch.json bearbeiten! Nach meiner Erfahrung erstellt VS Code in jedem von mir geöffneten Projektordner ein .vscode-Verzeichnis. Wenn Sie gestern den Ordner parent / und heute den Ordner parent / child / geöffnet haben, müssen Sie die entsprechenden Änderungen vornehmen.
Chrisinmtown

44

Sie müssen lediglich die cwd-Einstellung in der Datei launch.json wie folgt konfigurieren:

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

Weitere Informationen hierzu finden Sie auf der offiziellen VS Code Docs-Website .


Ja, habe das getan. Ich sehe, dass es tatsächlich das .vscode-Verzeichnis ist, also denke ich, dass ich am Ende \ .. hinzufügen muss, oder?
user1443098

Ja, wird die Antwort entsprechend ändern
Don

17
"cwd": "${fileDirname}"im aktuellen Verzeichnis der Open-Source-Datei
ausführen

16

Diese Einstellung hilft mir:

{
  "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

In einigen Fällen kann es auch nützlich sein, Folgendes PYTHONPATHzusammen mit workspaceFolder:

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


3

Ich veröffentliche diese Beispielkonfiguration für Personen, die TypeScript auf Node.js verwenden

In meinem Projekt befinden sich die TypeScript-Dateien meines Node.js-Servers im Ordner Application_ts, und die kompilierten js-Dateien werden im Ordner Application generiert

Denn wenn wir unsere Anwendung im Debug-Modus ausführen oder normal starten, sollten wir vom Anwendungsordner aus starten, der die js-Dateien enthält. Führen Sie die folgende Konfiguration aus dem Stammordner aus, in dem meine application_ts ebenfalls vorhanden sind und einwandfrei funktionieren

{
  "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

Sie können das aktuelle Arbeitsverzeichnis für das debuggte Programm mit dem cwdArgument in einrichtenlaunch.json


Super! Bring mich zum nächsten Schritt. Versuchen Sie nun, das Programm tatsächlich im Debug auszuführen. Hier ist der Code: print (os.getcwd ())
user1443098

Super! Bring mich zum nächsten Schritt. Ich habe einen Einzeiler: print (os.getcwd ()), den ich debuggen möchte. Ich klicke auf das Debug-Symbol (oder drücke F5). Unter dem Pulldown-Menü "Umgebung" befindet sich eine kleine blaue Linie. Mein Code wird jedoch nie ausgeführt. Ich schätze, ich vermisse etwas. Was würde das sein?
user1443098

Vergiss die letzten beiden, ich habe es verstanden
user1443098

1
Nächste Sache. Als ich den Vorschlag verwendete, war ich überrascht zu sehen, dass $ {workspaceRoot} nicht das Stammverzeichnis war, sondern das Verzeichnis .vscode unter dem Stammverzeichnis. Ist das wie erwartet? Wenn ja, kann ich cwd auf $ {workspaceRoot} \ .. setzen (unter Windows)
user1443098

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.