VSCode - como definir o diretório de trabalho para depuração

88

Estou começando a usar vscode para Python. Eu tenho um programa de teste simples. Quero executá-lo sob depuração e preciso definir o diretório de trabalho para a execução.

Como / onde faço isso?

user1443098
fonte

Respostas:

141

O comentário de @ SpeedCoder5 merece uma resposta;

Especificamente, você pode especificar um diretório de trabalho dinâmico; (ou seja, qualquer diretório onde o arquivo Python aberto atualmente está localizado), usando"cwd": "${fileDirname}"

se você estiver usando a Python: Current File (Integrated Terminal)opção ao executar o Python, seu launch.jsonarquivo pode se parecer com o meu, abaixo.

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

[Lembre-se de que o launch.jsonarquivo controla as configurações de execução / depuração de seu projeto de código do Visual Studio] [1]; meu launch.jsonarquivo foi gerado automaticamente pelo VS Code, no diretório do meu atual "Open Project". Acabei de editar o arquivo manualmente para adicionar "cwd": "${fileDirname}"como mostrado acima.

Lembre-se de que o launch.jsonarquivo pode ser específico para o seu projeto ou específico para o seu diretório, portanto, confirme se você está editando o arquivo correto launch.json (ver comentário)

Se você não tiver um launch.jsonarquivo, tente o seguinte :

Para criar um arquivo launch.json, abra a pasta do projeto no VS Code (Arquivo> Abrir pasta) e selecione o ícone Configurar engrenagem na barra superior da visualização Depurar. [1]: https://code.visualstudio.com/docs/editor/debugging#_launch-versus-attach-configurations

The Red Pea
fonte
6
Existe alguma maneira de definir isso como uma configuração padrão para todas as configurações?
Serhiy
1
Certifique-se de editar o arquivo launch.json correto! Na minha experiência, o VS Code cria um diretório .vscode em cada pasta de projeto que abro. Se ontem você abriu a pasta pai / e hoje abriu pai / filho /, você terá que fazer as alterações de forma apropriada.
chrisinmtown
44

Tudo que você precisa fazer é definir a configuração cwd no arquivo launch.json da seguinte maneira:

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

Mais informações sobre isso podem ser encontradas no site oficial da documentação do VS Code .

Don
fonte
Sim, fiz isso. Vejo que na verdade é o diretório .vscode, então acho que preciso adicionar \ .. ao final, certo?
user1443098
Sim, alterará a resposta de acordo
Don
17
"cwd": "${fileDirname}"para executar no diretório atual do arquivo de código aberto
SpeedCoder5
16

Essa configuração me ajuda:

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

Em alguns casos, também pode ser útil definir o PYTHONPATHjunto com workspaceFolder:

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

CermakM
fonte
3

Estou postando este exemplo de configuração para pessoas que usam TypeScript em Node.js

no meu projeto, meus arquivos TypeScript do servidor Node.js estão localizados na pasta Application_ts e os arquivos js compilados são gerados na pasta chamada Application

porque quando executamos nosso aplicativo em modo de depuração ou o iniciamos normalmente, devemos iniciar a partir da pasta do aplicativo que contém os arquivos js, então a configuração abaixo execute o debug da pasta raiz onde meu application_ts também existe e funciona perfeitamente

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

Você pode configurar o diretório de trabalho atual para o programa depurado usando o cwdargumento emlaunch.json

Krzysztof Cieslak
fonte
Super! Me leva para a próxima etapa. Agora, tentando realmente executar o programa em depuração. aqui está o código: print (os.getcwd ())
user1443098
Super! Me leva para a próxima etapa. Eu tenho um one-liner: print (os.getcwd ()) que desejo depurar. Clico no ícone de depuração (ou pressiono F5). Há uma pequena linha azul em movimento no menu suspenso Ambiente. No entanto, meu código nunca é executado. Acho que estou perdendo alguma coisa. O que seria aquilo?
user1443098
esqueça os dois últimos, entendi
user1443098
1
Próxima coisa. Usando a sugestão, fiquei surpreso ao ver que $ {workspaceRoot} não era realmente a raiz, mas o diretório .vscode sob a raiz. É o esperado? Nesse caso, posso definir cwd como $ {workspaceRoot} \ .. (no Windows também)
user1443098