VSCode - comment définir le répertoire de travail pour le débogage


88

Je commence à utiliser vscode pour Python. J'ai un programme de test simple. Je veux l'exécuter sous le débogage et je dois définir le répertoire de travail pour l'exécution.

Comment / où dois-je faire ça?

Réponses:


141

Le commentaire de @ SpeedCoder5 mérite d'être une réponse;

Plus précisément, vous pouvez spécifier un répertoire de travail dynamique; (c'est-à-dire quel que soit le répertoire où se trouve le fichier Python actuellement ouvert), en utilisant"cwd": "${fileDirname}"

si vous utilisez l' Python: Current File (Integrated Terminal)option lorsque vous exécutez Python, votre launch.jsonfichier peut ressembler au mien, ci-dessous.

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

[Souvenez-vous que le launch.jsonfichier contrôle les paramètres d'exécution / débogage de votre projet de code Visual Studio] [1]; mon launch.jsonfichier a été généré automatiquement par VS Code, dans le répertoire de mon "Open Project" actuel. Je viens de modifier le fichier manuellement pour l'ajouter "cwd": "${fileDirname}"comme indiqué ci-dessus.

N'oubliez pas que le launch.jsonfichier peut être spécifique à votre projet ou spécifique à votre répertoire, alors confirmez que vous modifiez le bon launch.json (voir commentaire)

Si vous n'avez pas de launch.jsonfichier, essayez ceci :

Pour créer un fichier launch.json, ouvrez votre dossier de projet dans VS Code (Fichier> Ouvrir le dossier), puis sélectionnez l'icône Configurer l'engrenage dans la barre supérieure de la vue Débogage. [1]: https://code.visualstudio.com/docs/editor/debugging#_launch-versus-attach-configurations


6
Un moyen de définir cela comme paramètre par défaut pour toutes les configurations?
Serhiy

1
Assurez-vous que vous modifiez le bon fichier launch.json! D'après mon expérience, VS Code crée un répertoire .vscode dans chaque dossier de projet que j'ouvre. Si hier vous avez ouvert le dossier parent / et aujourd'hui vous avez ouvert parent / enfant /, vous devrez apporter les modifications appropriées.
chrisinmtown

44

Tout ce que vous avez à faire est de configurer le paramètre cwd dans le fichier launch.json comme suit:

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

Vous trouverez plus d'informations à ce sujet sur le site Web officiel de la documentation VS Code .


Ouais, fais ça. Je vois que c'est en fait le répertoire .vscode, donc je pense que je dois ajouter \ .. à la fin, non?
user1443098

Oui, modifiera la réponse en conséquence
Don

17
"cwd": "${fileDirname}"pour exécuter dans le répertoire actuel du fichier open source
SpeedCoder5

16

Ce paramètre m'aide:

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

Dans certains cas, il peut également être utile de définir le PYTHONPATHavec workspaceFolder:

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


3

Je poste cet exemple de configuration pour les personnes qui utilisent TypeScript sur Node.js

dans mon projet, les fichiers TypeScript de mon serveur Node.js sont situés dans le dossier Application_ts et les fichiers js compilés sont générés dans le dossier nommé Application

car lorsque nous exécutons notre application en mode débogage ou que nous la démarrons normalement, nous devrions commencer à partir du dossier Application qui contient les fichiers js, donc la configuration ci-dessous lance le débogage à partir du dossier racine où mon application_ts existe également et fonctionne parfaitement

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

Vous pouvez configurer le répertoire de travail actuel pour le programme débogué en utilisant l' cwdargument danslaunch.json


Super! M'a amené à l'étape suivante. Maintenant, essayez d'exécuter le programme en mode débogage. voici le code: print (os.getcwd ())
user1443098

Super! M'a amené à l'étape suivante. J'ai un one-liner: print (os.getcwd ()) que je veux déboguer. Je clique sur l'icône de débogage (ou frappe F5), il y a une petite ligne mobile bleue sous le menu déroulant Environnement. Cependant, mon code ne s'exécute jamais. Je suppose que je manque quelque chose. Qu'est-ce que ce serait?
user1443098

oubliez ces deux derniers, je l'ai
user1443098

1
Prochaine chose. En utilisant cette suggestion, j'ai été surpris de voir que $ {workspaceRoot} n'était pas réellement la racine mais le répertoire .vscode sous la racine. Est-ce que c'est comme prévu? Si tel est le cas, je peux définir cwd sur $ {workspaceRoot} \ .. (sous windows anway)
user1443098

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.