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?

user1443098
la source

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

Le pois rouge
la source
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 .

Don
la source
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
}
Xin
la source
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}"
    }
}

CermakM
la source
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
    }
 ]
}
MJ X
la source
1

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

Krzysztof Cieslak
la source
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