Usa Virtualenv con Python con Visual Studio Code in Ubuntu


86

Ho un progetto Python e la navigazione / il completamento automatico funzionano perfettamente all'interno dei file nel progetto. Voglio specificare un virtualenv in modo che la navigazione / il completamento automatico funzioni con i pacchetti all'interno di quel virtualenv.

Ho provato questo in settings.py ma la navigazione / completamento automatico non funziona. Anche impostando "python.pythonPath":"~/dev/venvs/proj/bin/pythonucciso la navigazione / completamento automatico originale.

{
    "editor.rulers": [80,100],
    "python.autoComplete.extraPaths": [
        "~/dev/venvs/proj",
        "~/dev/venvs/proj/lib"
     ]
}

anche uno shebang come questo funziona, se non vuoi fare confusione con le impostazioni: #! bin / python3
Alex R

youtu.be/6YLMWU-5H9o?t=550 qui Dan Taylor spiega come eseguire virtualenv in vscode
test30

Per l'ultima versione di Code, ho appena fatto clic sull'interprete Python in basso a sinistra, poi è arrivata la tavolozza dei comandi in alto al centro, seleziona Inserisci percorso per un interprete Python, quindi seleziona Trova ... quindi trova in ~ / il tuo percorso venv / bin / python, ho python3.8
JCQian

Risposte:


96

Con l'ultimo aggiornamento dell'estensione, tutto ciò che devi fare è specificare "python.pythonPath"quanto segue. I valori per "python.autoComplete.extraPaths"verranno determinati durante il runtime, ma sei comunque libero di specificare percorsi personalizzati al suo interno.

Ricordati di riavviare VS Code una volta apportate le modifiche necessarie.

{
    "editor.rulers": [80,100],
    "python.pythonPath":"~/dev/venvs/proj/bin/python"
}

2
FWIW ho dovuto usare un percorso assoluto almeno per pylint
Kat

6
Intendi nelle impostazioni dell'area di lavoro? C'è un modo per impostare la preferenza solo per una sottostruttura del mio spazio di lavoro?
yucer

3
Puoi farlo per progetto?
holms

1
Don sopra ha ragione. Per favore, ricontrolla il sito web di VS Code: code.visualstudio.com/docs/python/…
Ricardo Anjos

5
@holms yup, vuoi modificare le impostazioni dell'area di lavoro ( .vscode/settings.json)
Atav32

91

A partire da settembre 2016 (secondo la documentazione del repository Github dell'estensione ) puoi semplicemente eseguire un comando dall'interno di vscode che ti consentirà di selezionare l'interprete da un elenco generato automaticamente di interpreti noti (incluso quello nell'ambiente virtuale del tuo progetto).

Come utilizzare questa funzionalità?

  • Selezionare il comando Python: Select Workspace Interpreter(*) dalla tavolozza dei comandi (F1).

  • Dopo aver selezionato il comando precedente, verrà visualizzato un elenco di interpreti scoperti in un quick pickelenco.

  • La selezione di un interprete da questo elenco aggiornerà automaticamente il file settings.json .

(*) Questo comando è stato aggiornato per Python: Select Interpreterla versione più recente di VSC (grazie @nngeek).
Inoltre, nota che l'interprete selezionato verrà mostrato sul lato sinistro della barra di stato, ad esempio Python 3.6 64 bit. Questo è un pulsante su cui puoi fare clic per attivare la funzione Seleziona interprete.


3
cosa triste, non mi permette di aggiungere un nuovo interprete alla lista ... è anche possibile?
genuinefafa

@genuinefafa Non so molto sul codice, ma nella documentazione del repository che ho collegato si afferma che gli interpreti vengono scoperti cercando in percorsi standard (/ usr / local / bin, / usr / sbin, / sbin), ambienti virtuali sotto il progetto in corso e gli ambienti Conda. Forse potresti aggiungere il tuo interprete a una di queste posizioni in modo che possa riprenderlo automaticamente. Ma sto solo indovinando.
Daniel F.

È una buona idea @DanielF. Lo risolvo ma impostando manualmente le directory che puntano all'ambiente di progetto. L' $PATHidea non ha funzionato (in realtà è ciò che workondovrebbe fare uno script). Questo è stato testato poche settimane fa, non sono sicuro se lo risolverà nelle nuove versioni.
genuinefafa

4
Per trovare il tuo virtualenv, python.venvPathdeve essere impostato.
Mahmoud Hanafy

2
A partire da dicembre 2017 con il codice 1.18.1, il comando Python: Select Interpreterproviene dalla tavolozza dei comandi. python workspace
Ha lottato

34

Abbastanza semplice con l'ultimo VSCode, se hai installato l' estensione Python ufficiale per VSCode

Shift+ Command+P

Tipo: Python: Seleziona Interprete

Scegli il tuo ambiente virtuale.

Sito ufficiale


14
Sfortunatamente, questo comando non riesce a elencare gli env virtuali locali.
Antonin

@Antonin I test sul mio vscode sull'ultima versione, funziona. Sei in mac o altro sistema e qual è il tuo errore?
DingLi

1
Infatti su un Mac, grazie @DingLi, ha funzionato dopo aver impostato questo:"python.venvFolders": [ "${rootPath}", "envs", ".pyenv", ".direnv" ],
Antonin

1
@Antonin for the virtual envs, see the ssword's answer
carton.swing

2
Sì, vorrei davvero che tu e tutti gli altri smettessi di dire "abbastanza semplice". Gli env virtuali non vengono elencati, solo interpreti, versione macOS 2019.6. E questa è una domanda che dice virtualenv, non solo interpreti Python. @ssword ha la risposta corretta. O almeno spero che porti il ​​resto della configurazione basata su virtualenv, che NON è solo l'eseguibile python da usare.
JL Peyret

34

Con l'ultima estensione Python per il codice di Visual Studio, c'è un'impostazione venvPath:

// Path to folder with a list of Virtual Environments (e.g. ~/.pyenv, ~/Envs, ~/.virtualenvs).
  "python.venvPath": "",

Su Mac OS X, vai a Code > Preferences > Settingse scorri verso il basso fino a Configurazione Python .

Cerca "python.venvPath: "",e fai clic sulla matita sul lato sinistro per aprire le impostazioni utente. Infine, aggiungi il percorso in cui memorizzi i tuoi ambienti virtuali.

Se stai usando virtuanenvwrapper, o hai messo tutte le impostazioni dell'ambiente virtuale in una cartella, questa sarà quella che fa per te.

Dopo aver configurato "python.venvPath", riavvia VSC. Quindi apri la tavolozza dei comandi e cerca "Python: Seleziona interprete". A questo punto, dovresti vedere l'interprete associato all'ambiente virtuale che hai appena aggiunto.


13

Un altro modo è aprire il VSC da un terminale con il set virtualenv e F1 Python: Select Interpreterdevi eseguire e selezionare virtualENV richiesto

virtualENV


8
Questo non sembra funzionare per me. Devo avere il file delle impostazioni. C'è qualcosa che mi manca?
McKay

1
Ho usato questo metodo con successo ma ho dovuto fare il codice -a.
YoFlynn

1
Questo mi ha procurato l'interprete Python giusto, ma non ha trovato il resto del mio venv. L'aggiunta del nome della mia directory venv "ve" a python.venvFolders lo ha risolto.
user1055568

1
Il mio commento precedente era sbagliato. Avevo altri problemi che ho scambiato per non aver trovato venv.
user1055568

7

Risposta provvisoria. Ho messo il percorso assoluto dell'eseguibile Python dell'ambiente virtuale e ha anche i pacchetti. Ho quindi riavviato il codice VS.

Sto cercando di ottenere $ {workspaceRoot} per evitare l'hardcoding di percorsi assoluti, per favore aiutatemi se ci siete riusciti.

{
    "editor.rulers": [80,100],
    "python.pythonPath": "/home/jesvin/dev/ala/venv/bin/python",
    "python.autoComplete.extraPaths": [
        "/home/jesvin/dev/ala/venv/lib/python2.7",
        "/home/jesvin/dev/ala/venv/lib/python2.7/site-packages"
     ]
}


4

Sono stato in grado di utilizzare l'impostazione dell'area di lavoro richiesta da altre persone in questa pagina.

In Preferenze, ⌘ + P, cerca python.pythonPathnella barra di ricerca.

Dovresti vedere qualcosa come:

// Path to Python, you can use a custom version of Python by modifying this setting to include the full path.
"python.pythonPath": "python"

Quindi fare clic sulla scheda IMPOSTAZIONI AREA DI LAVORO sul lato destro della finestra. In questo modo l'impostazione sarà applicabile solo all'area di lavoro in cui ti trovi.

Successivamente, fai clic sull'icona della matita accanto a "python.pythonPath". Questo dovrebbe copiare l'impostazione sulle impostazioni dell'area di lavoro.

Cambia il valore in qualcosa di simile:

"python.pythonPath": "${workspaceFolder}/venv"

2

a) Modificare l'impostazione del percorso ambiente virtuale predefinito di Visual Studio Code. Si chiama "python.venvPath". Puoi farlo andando in codice-> impostazioni e scorri verso il basso per le impostazioni di Python.

b) Riavvia VS Code

c) Ora se fai Maiusc + Comando + P e digiti Python: Seleziona Interprete dovresti vedere l'elenco dei tuoi ambienti virtuali.


1

Sembra essere (come da 2018.03) in code-insider, la direttiva è stata introdotta chiamata python.venvFolders:

  "python.venvFolders": [
    "envs",
    ".pyenv",
    ".direnv"
  ],

Tutto ciò di cui hai bisogno è aggiungere il nome della tua cartella virtualenv.


1

Su Mac OSX utilizzando la versione del codice 1.34.0 (1.34.0) ho dovuto fare quanto segue per far riconoscere a VSCode gli ambienti virtuali:

Posizione del mio ambiente virtuale (denominato ml_venv):

/Users/auser/.pyvenv/ml_venv

auser@HOST:~/.pyvenv$ tree -d -L 2
.
└── ml_venv
    ├── bin
    ├── include
    └── lib

Ho aggiunto la seguente voce in Settings.json: "python.venvPath": "/Users/auser/.pyvenv"

Riavviato l'IDE e ora ho potuto vedere l'interprete dal mio ambiente virtuale: inserisci qui la descrizione dell'immagine


Usare il percorso assoluto è importante. Questo ha funzionato per me. Grazie
Alexander Suraphel

0

Ottenuto da Youtube Configurazione di Python VS ... Venv

OK, il video davvero non mi ha aiutato molto, ma ... il primo commento sotto (dalla persona che ha pubblicato il video) ha molto senso ed è oro puro.

Fondamentalmente, apri il terminale integrato di VS. Quindi source <your path>/activate.sh, nel solito modo in cui scegli un venv dalla riga di comando. Ho una funzione bash predefinita per trovare e avviare il file di script corretto e ha funzionato perfettamente.

Citando direttamente quel commento di YT (tutto merito di aneuris ap ):

(hai davvero bisogno solo dei passaggi 5-7)

1- Open your command line/terminal and type pip virtualenv.
2. Create a folder in which the virtualenv will be placed .
3. cd to the script folder in the virtualenv and run activate.bat (CMD).
4. deactivate to turn of the virtualenv (CMD).
5. open the project in VS Code  and use its built-in terminal to cd to the script folder in you virtualenv.
6. type source activates (in vs code I use the git terminal).
7. deactivate to turn off the virtualenv.

Come puoi notare, sta parlando activate.bat. Quindi, se funziona per me su un Mac, e funziona anche su Windows, è probabile che sia abbastanza robusto e portatile. 😀

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.