Use Virtualenv con Python con Visual Studio Code en Ubuntu

86

Tengo un proyecto de Python y la navegación / autocompletar funciona perfectamente dentro de los archivos del proyecto. Quiero especificar un virtualenv para que la navegación / autocompletar funcione con paquetes dentro de ese virtualenv.

Intenté esto en settings.py pero la navegación / autocompletar no funciona. También al configurar "python.pythonPath":"~/dev/venvs/proj/bin/pythonmató la navegación original / autocompletar.

{
    "editor.rulers": [80,100],
    "python.autoComplete.extraPaths": [
        "~/dev/venvs/proj",
        "~/dev/venvs/proj/lib"
     ]
}
Jesvin José
fuente
un shebang como este también funciona, si no quiere meterse con la configuración: #! bin / python3
Alex R
youtu.be/6YLMWU-5H9o?t=550 aquí Dan Taylor explica cómo ejecutar virtualenv en vscode
test30
Para la última versión de Code, simplemente hice clic en el intérprete de Python en la parte inferior izquierda, luego apareció la paleta de comandos en la parte superior central, seleccione Ingresar ruta a un intérprete de Python, luego seleccione Buscar ... luego busque en ~ / su ruta de venv / bin / python, tengo python3.8
JCQian

Respuestas:

96

Con la última actualización de la extensión, todo lo que necesita hacer es especificar lo "python.pythonPath"siguiente. Los valores de "python.autoComplete.extraPaths"se determinarán durante el tiempo de ejecución, pero aún puede especificar rutas personalizadas allí.

Recuerde reiniciar VS Code una vez que se hayan realizado los cambios necesarios.

{
    "editor.rulers": [80,100],
    "python.pythonPath":"~/dev/venvs/proj/bin/python"
}
Don
fuente
2
FWIW tuve que usar una ruta absoluta al menos para pylint
Kat
6
¿Te refieres a la configuración del espacio de trabajo? ¿Hay alguna forma de configurar la preferencia solo para un subárbol de mi espacio de trabajo?
Yucer
3
¿Puedes hacer esto por proyecto?
holms
1
Don de arriba tiene razón. Por favor, revise el sitio web de VS Code: code.visualstudio.com/docs/python/…
Ricardo Anjos
5
@holms sí, desea editar la configuración del espacio de trabajo ( .vscode/settings.json)
Atav32
91

A partir de septiembre de 2016 (de acuerdo con la documentación del repositorio de Github de la extensión ), puede simplemente ejecutar un comando desde vscode que le permitirá seleccionar el intérprete de una lista generada automáticamente de intérpretes conocidos (incluido el del entorno virtual de su proyecto).

¿Cómo utilizar esta función?

  • Seleccione el comando Python: Select Workspace Interpreter(*) de la paleta de comandos (F1).

  • Al seleccionar el comando anterior, se mostrará una lista de intérpretes descubiertos en una quick picklista.

  • Al seleccionar un intérprete de esta lista , el archivo settings.json se actualizará automáticamente .

(*) Este comando se ha actualizado a Python: Select Interpreterla última versión de VSC (gracias @nngeek).
Además, observe que el intérprete seleccionado se mostrará en el lado izquierdo de la barra de estado, por ejemplo, Python 3.6 de 64 bits. Este es un botón en el que puede hacer clic para activar la función Seleccionar intérprete.

Daniel F.
fuente
3
Lo triste es que no me permite agregar un nuevo intérprete a la lista ... ¿es eso posible?
Genuinefafa
@genuinefafa No sé mucho sobre el código, pero en la documentación del repositorio que vinculé, indica que los intérpretes se descubren buscando en rutas estándar (/ usr / local / bin, / usr / sbin, / sbin), entornos virtuales en el proyecto actual y los entornos de Conda. Tal vez podría agregar su intérprete a una de estas ubicaciones para que pueda recogerlo automáticamente. Pero solo estoy adivinando.
Daniel F.
Esa es una buena idea @DanielF. Lo soluciono pero configurando manualmente los directorios que apuntan al entorno del proyecto. La $PATHidea no funcionó (en realidad es lo que workondebería hacer un script). Esto se probó hace unas semanas, no estoy seguro de si lo resolverán en nuevas versiones.
Genuinefafa
4
Para encontrar su virtualenv, python.venvPathdebe configurarlo.
Mahmoud Hanafy
2
A partir de diciembre de 2017 con el código 1.18.1, el comando es Python: Select Interpreterde la paleta de comandos. Luché por un tiempo para buscar python workspaceen la lista de comandos ...
nngeek
34

Bastante simple con el último VSCode, si ha instalado la extensión oficial de Python para VSCode

Shift+ Command+P

Tipo: Python: seleccione intérprete

Elija su entorno virtual.

Sitio oficial

DingLi
fuente
14
Desafortunadamente, este comando no lista los entornos virtuales locales.
Antonin
@Antonin Pruebo en mi vscode en la última versión, funciona. ¿Estás en mac o en otro sistema, y ​​cuál es tu error?
DingLi
1
De hecho, en una Mac, gracias @DingLi, funcionó después de configurar esto:"python.venvFolders": [ "${rootPath}", "envs", ".pyenv", ".direnv" ],
Antonin
1
@Antonin para los envs virtuales, vea la respuesta de ssword
carton.swing
2
Sí, realmente deseo que usted, y todos los demás, dejen de decir "bastante simple". No se enumeran los envs virtuales, solo los intérpretes, versión 2019.6 de macOS. Y esta es una pregunta que dice virtualenv, no solo intérpretes de Python. @ssword tiene la respuesta correcta. O al menos espero que traiga el resto de la configuración basada en virtualenv, que NO es solo el ejecutable de Python para usar.
JL Peyret
34

Con la última extensión de Python para el código de Visual Studio, hay una configuración de venvPath:

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

En Mac OS X, vaya Code > Preferences > Settingsy desplácese hacia abajo hasta Configuración de Python .

Busque "python.venvPath: "",y haga clic en el lápiz en el lado izquierdo para abrir la configuración de usuario. Finalmente, agregue la ruta donde almacena sus entornos virtuales.

Si está utilizando virtuanenvwrapper, o ha puesto toda su configuración de entorno virtual en una carpeta, esta será la adecuada para usted.

Una vez que haya configurado "python.venvPath", reinicie VSC. Luego abra la paleta de comandos y busque "Python: Seleccionar intérprete". En este punto, debería ver el intérprete asociado con el entorno virtual que acaba de agregar.

espada
fuente
13

Otra forma es abrir el VSC desde un terminal con el virtualenv configurado y necesita realizar F1 Python: Select Interpretery seleccionar virtualENV requerido

virtualENV

pm.calabrese
fuente
8
Esto no parece funcionar para mí. Tengo que tener el archivo de configuración. ¿Se me escapa algo?
McKay
1
Usé este método con éxito pero tuve que hacer el código -a.
YoFlynn
1
Esto me consiguió el intérprete de Python correcto, pero no encontró el resto de mi venv. Agregar mi nombre de directorio de venv "ve" a python.venvFolders lo solucionó.
user1055568
1
Mi comentario anterior estaba equivocado. Estaba teniendo otros problemas que confundí con no encontrar venv.
user1055568
7

Respuesta tentativa. Pongo la ruta absoluta del ejecutable de Python del entorno virtual y también tiene los paquetes. Luego reinicié el código VS.

Estoy tratando de obtener $ {workspaceRoot} para evitar la codificación de rutas absolutas, por favor ayude si lo ha logrado.

{
    "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"
     ]
}
Jesvin José
fuente
2
He planteado un problema en github.com/DonJayamanne/pythonVSCode/issues/148
Jesvin Jose
4

Pude usar la configuración del espacio de trabajo que otras personas en esta página han estado solicitando.

En Preferencias, ⌘ + P, busque python.pythonPathen la barra de búsqueda.

Debería ver algo como:

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

Luego haga clic en la pestaña CONFIGURACIÓN DEL ESPACIO DE TRABAJO en el lado derecho de la ventana. Esto hará que la configuración solo sea aplicable al espacio de trabajo en el que se encuentra.

Luego, haga clic en el ícono del lápiz junto a "python.pythonPath". Esto debería copiar la configuración sobre la configuración del espacio de trabajo.

Cambie el valor a algo como:

"python.pythonPath": "${workspaceFolder}/venv"
Charlie Le
fuente
2

a) Modifique la configuración de ruta de entorno virtual predeterminada de Visual Studio Code. Se llama "python.venvPath". Para hacer esto, vaya a código-> configuración y desplácese hacia abajo para ver la configuración de Python.

b) Reiniciar VS Code

c) Ahora, si hace Shift + Command + P y escribe Python: seleccione Intérprete, debería ver la lista de sus entornos virtuales.

Ajay K
fuente
1

Parece estar (como en 2018.03) en código interno, se introdujo una directiva llamada python.venvFolders:

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

Todo lo que necesita es agregar el nombre de su carpeta virtualenv.

holms
fuente
1

En Mac OSX con la versión de código 1.34.0 (1.34.0) tuve que hacer lo siguiente para que VSCode reconociera los entornos virtuales:

Ubicación de mi entorno virtual (llamado ml_venv):

/Users/auser/.pyvenv/ml_venv

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

Agregué la siguiente entrada en Settings.json: "python.venvPath": "/Users/auser/.pyvenv"

Reinicié el IDE y ahora pude ver el intérprete de mi entorno virtual: ingrese la descripción de la imagen aquí

b.sodhi
fuente
El uso de la ruta absoluta es importante. Esto funcionó para mí. Gracias
Alexander Suraphel
0

Obtuve esto de Youtube Configurando Python VS ... Venv

OK, el video realmente no me ayudó mucho, pero ... el primer comentario debajo (por la persona que publicó el video) tiene mucho sentido y es oro puro.

Básicamente, abre la Terminal incorporada de VS. Luego source <your path>/activate.sh, de la forma habitual, elige un venv desde la línea de comando. Tengo una función de bash predefinida para encontrar e iniciar el archivo de script correcto y eso funcionó bien.

Citando ese comentario de YT directamente (todo crédito a aneuris ap ):

(realmente solo necesitas los pasos 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.

Como puede notar, está hablando activate.bat. Entonces, si me funciona en una Mac, y también funciona en Windows, lo más probable es que sea bastante robusto y portátil. 😀

JL Peyret
fuente