2016-04-18 4 views
5

Ecco l'estensione per python che ho usato nel codice vs: python extension.Lettura dell'input durante il debug in Python con VSCode

Quando utilizzo la funzionalità di debug fornita dall'estensione, si bloccherà lì e non farà nulla se necessita di input dalla riga di comando.

Dove posso immettere i valori per passare sopra l'istruzione di input nel codice vs?

+0

Hai aggiunto python al tuo percorso? Hai guardato qui https://github.com/DonJayamanne/pythonVSCode/wiki/Python-Path-and-Version –

+1

@DaneBalia ho fatto e questo non funziona neanche per me. Puoi fare un esempio su come gestirli in VS Code? Sto testando con un file di riga con '' print (input ('add test input')) '' e rimane bloccato nel debuger. – Igor

risposta

7

trick to getting this to work è nella pagina wiki dell'interno (Don Jayamanne's Python). È necessario includere l'impostazione "externalConsole": true nella sezione "name": "Python" del file.

wiki del prolungamento conferma che questo non funziona per impostazione predefinita:

Questo permette la cattura di input dalla console/terminale finestra applicazioni, che non è possibile nel debugger VSCode standard.

Ecco i passi per ottenere questo al lavoro:

  1. Dalla finestra di debug (Ctrl + Shift + D), premere la piccola icona dell'ingranaggio per aprire (o per generare) un launch.json file. Viene inserito in una directory .vscode in qualsiasi cartella che sia stata selezionata come "Apri cartella" in VS Code.
  2. È necessario aggiungere il parametro pythonPath al primo blocco di configurazione. Questo è necessario per far funzionare il debugger.
  3. È inoltre necessario aggiungere e il parametro externalConsole allo stesso blocco. Questo è ciò che è necessario per consentire al debugger di accettare l'input. Quando esegui il debug, una finestra separata si aprirà al di fuori del VS Code ma funzionerà bene diversamente.
  4. Dopo aver aggiunto entrambe le impostazioni, il blocco dovrebbe essere simile a questo. Non ho dovuto modificare nient'altro nel resto del file launch.json.

    { 
        "name": "Python", 
        "type": "python", 
        "request": "launch", 
        "stopOnEntry": true, 
        "program": "${file}", 
        "pythonPath": "C:/Users/igor/Documents/Tools/WinPython-32bit-3.4.3.7Slim/python-3.4.3/python.exe", 
        "externalConsole": true, 
        "debugOptions": [ 
         "WaitOnAbnormalExit", 
         "WaitOnNormalExit", 
         "RedirectOutput" 
        ] 
    }, 
    
+1

In altre parole, "RTFM". :) –

2

VS Codice dispone di un'opzione per eseguire il debug con la console Python. Hai appena premuto Ctrl + Maiusc + D e accanto all'icona di riproduzione blu appena apparso hai una freccia giù, fai semplicemente clic e scegli App Console Python invece di solo Python like this

6

La direttiva externalconsole è deprecata. Utilizzare console invece e indicare la vostra preferenza per esterni in questo modo:

"console": "externalTerminal" 

L'uscita di applicazione (e ingresso) andrà a una finestra separata in modo che la console di debug di codice VS rimane un prompt di pitone puro in cui è possibile valutare le cose durante i punti di interruzione .

+0

Uso VScode v1.17 su Linux. Ha creato automaticamente l'impostazione seguente. { "name": "External Terminal/Console", "type": "python", "richiesta": "lancio", "stopOnEntry": true, "PYTHONPATH": "$ {config: python.pythonPath} " "programma": "$ {file}", "CWD": "", "console": "externalTerminal", "env": {}, "envfile":" $ {workspaceRoot} /. env ", " debugOptions ": [ " WaitOnAbnormalExit ", " WaitOnNormalExit " ] }, – user927387

2

L'opzione console può avere uno qualsiasi di questi valori: internalConsole, integratedTerminal, externalTerminal.

Normalmente se si avvia il debugger e il programma si ferma, lascia il terminale esterno che visualizza un prompt Press Enter to continue . . . per accedere a qualsiasi output del programma. Se accidentalmente si verifica un errore di sintassi, il terminale esterno si chiude semplicemente senza lasciare alcun messaggio.

Quando si utilizza l'opzione integratedTerminal, il terminale rimane lì e visualizza il messaggio di errore.

Mentre non so se questa cosa ExternalTerminal è un bug o no, l'opzione IntegratedTerminal sembra funzionare molto meglio in questo caso.

0

In Codice di Visual Studio fare clic sull'elenco di selezione sulla destra della freccia verde. Quindi seleziona Python: Terminal (esterno). Quando avvii lo script verrà eseguito in una finestra esterna e ti consentirà di digitare l'input.