VSCode: cómo configurar el directorio de trabajo para la depuración

88

Estoy empezando a usar vscode para Python. Tengo un programa de prueba simple. Quiero ejecutarlo en depuración y necesito configurar el directorio de trabajo para la ejecución.

¿Cómo / dónde hago eso?

usuario1443098
fuente

Respuestas:

141

El comentario de @ SpeedCoder5 merece ser una respuesta;

Específicamente, puede especificar un directorio de trabajo dinámico; (es decir, cualquier directorio donde se encuentre el archivo Python actualmente abierto), usando"cwd": "${fileDirname}"

si está usando la Python: Current File (Integrated Terminal)opción cuando ejecuta Python, su launch.jsonarchivo puede verse como el mío, a continuación.

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

[Recuerde que el launch.jsonarchivo controla la configuración de ejecución / depuración de su proyecto de código de Visual Studio] [1]; mi launch.jsonarchivo fue generado automáticamente por VS Code, en el directorio de mi actual "Proyecto Abierto". Acabo de editar el archivo manualmente para agregarlo "cwd": "${fileDirname}"como se muestra arriba.

Recuerde que el launch.jsonarchivo puede ser específico para su proyecto o específico para su directorio, así que confirme que está editando el correcto launch.json (ver comentario)

Si no tiene un launch.jsonarchivo, intente esto :

Para crear un archivo launch.json, abra la carpeta de su proyecto en VS Code (Archivo> Abrir carpeta) y luego seleccione el ícono de engranaje Configurar en la barra superior de la vista Depuración. [1]: https://code.visualstudio.com/docs/editor/debugging#_launch-versus-attach-configurations

El guisante rojo
fuente
6
¿Alguna forma de establecer esto como configuración predeterminada para todas las configuraciones?
Serhiy
1
¡Asegúrese de editar el archivo launch.json correcto! En mi experiencia, VS Code crea un directorio .vscode en cada carpeta de proyecto que abro. Si ayer abrió la carpeta padre / y hoy abrió padre / hijo /, tendrá que hacer los cambios correspondientes.
chrisinmtown
44

Todo lo que necesita hacer es configurar la configuración de cwd en el archivo launch.json de la siguiente manera:

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

Se puede encontrar más información sobre esto en el sitio web oficial de documentos de VS Code .

Don
fuente
Sí, hizo eso. Veo que en realidad es el directorio .vscode, así que creo que necesito agregar \ .. al final, ¿verdad?
user1443098
Sí, enmendará la respuesta en consecuencia
Don
17
"cwd": "${fileDirname}"para ejecutar en el directorio actual del archivo de código abierto
SpeedCoder5
16

Esta configuración me ayuda a:

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

En algunos casos, también puede ser útil configurar PYTHONPATHjunto con workspaceFolder:

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

CermakM
fuente
3

Estoy publicando esta configuración de muestra para personas que usan TypeScript en Node.js

en mi proyecto, los archivos de TypeScript del servidor Node.js se encuentran en la carpeta Application_ts y los archivos js compilados se generan en la carpeta llamada Aplicación

porque cuando ejecutamos nuestra aplicación en modo de depuración o la iniciamos normalmente, deberíamos comenzar desde la carpeta de la Aplicación que contiene los archivos js, así que debajo de la configuración, ejecuta la depuración desde la carpeta raíz donde mi application_ts también existe y funciona perfectamente

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

Puede configurar el directorio de trabajo actual para el programa depurado usando el cwdargumento enlaunch.json

Krzysztof Cieslak
fuente
¡Súper! Me llevó al siguiente paso. Ahora, intentando ejecutar realmente el programa en debug. aquí está el código: print (os.getcwd ())
user1443098
¡Súper! Me llevó al siguiente paso. Tengo una sola línea: print (os.getcwd ()) que quiero depurar. Hago clic en el icono de depuración (o presiono F5), hay una pequeña línea azul en movimiento debajo del menú desplegable de Entorno. Sin embargo, mi código nunca se ejecuta. Supongo que me estoy perdiendo algo. ¿Qué sería eso?
user1443098
olvídate de los dos últimos, lo tengo
user1443098
1
Siguiente cosa. Usando la sugerencia, me sorprendió ver que $ {workspaceRoot} no era realmente la raíz sino el directorio .vscode debajo de la raíz. ¿Es esto como se esperaba? Si es así, puedo configurar cwd en $ {workspaceRoot} \ .. (en Windows anway)
user1443098