Use Virtualenv com Python com código do Visual Studio no Ubuntu

86

Eu tenho um projeto Python e a navegação / preenchimento automático funcionam perfeitamente dentro dos arquivos do projeto. Quero especificar um virtualenv para que a navegação / preenchimento automático funcione com os pacotes dentro desse virtualenv.

Tentei fazer isso em settings.py, mas a navegação / preenchimento automático não funciona. Também definindo "python.pythonPath":"~/dev/venvs/proj/bin/pythonmatou a navegação / autocomplete original.

{
    "editor.rulers": [80,100],
    "python.autoComplete.extraPaths": [
        "~/dev/venvs/proj",
        "~/dev/venvs/proj/lib"
     ]
}
Jesvin Jose
fonte
um truque como este também funciona, se você não quiser mexer nas configurações: #! bin / python3
Alex R
youtu.be/6YLMWU-5H9o?t=550 aqui Dan Taylor explica como executar virtualenv em vscode
test30
Para a versão mais recente do código, apenas cliquei no interpretador python na parte inferior esquerda, em seguida, veio a paleta de comandos no meio superior, selecione Enter path to a Python interpreter, selecione Find ... then find in ~ / your venv path / bin / python, tenho python3.8
JCQian

Respostas:

96

Com a última atualização da extensão, tudo o que você precisa fazer é especificar o "python.pythonPath"seguinte. Os valores de "python.autoComplete.extraPaths"serão determinados durante o tempo de execução, mas você ainda está livre para especificar caminhos personalizados lá.

Lembre-se de reiniciar o VS Code assim que as alterações necessárias forem feitas.

{
    "editor.rulers": [80,100],
    "python.pythonPath":"~/dev/venvs/proj/bin/python"
}
Don
fonte
2
FWIW eu tive que usar um caminho absoluto pelo menos para pylint
Kat
6
Você quer dizer nas configurações do espaço de trabalho? Existe alguma maneira de configurar a preferência apenas para uma subárvore da minha área de trabalho?
yucer
3
Você pode fazer isso por projeto?
holms
1
Don acima está certo. Verifique novamente o
Ricardo Anjos
5
@holms sim, você deseja editar as configurações do espaço de trabalho ( .vscode/settings.json)
Atav32
91

Em setembro de 2016 (de acordo com a documentação do repositório Github da extensão ), você pode apenas executar um comando de dentro do vscode que permitirá que você selecione o intérprete de uma lista gerada automaticamente de intérpretes conhecidos (incluindo aquele no ambiente virtual do seu projeto).

Como usar esse recurso?

  • Selecione o comando Python: Select Workspace Interpreter(*) na paleta de comandos (F1).

  • Ao selecionar o comando acima, uma lista de intérpretes descobertos será exibida em uma quick picklista.

  • A seleção de um intérprete nesta lista atualizará o arquivo settings.json automaticamente .

(*) Este comando foi atualizado para Python: Select Interpretera versão mais recente do VSC (graças @nngeek).
Além disso, observe que o interpretador selecionado será mostrado no lado esquerdo da barra de status, por exemplo, Python 3.6 64 bits. Este é um botão que você pode clicar para acionar o recurso Selecionar Intérprete.

Daniel F.
fonte
3
triste, não me permite adicionar um novo intérprete à lista ... isso é mesmo possível?
genuínofafa
@genuinefafa Não sei muito sobre o Código, mas na documentação do repo que vinculei afirma que os intérpretes são descobertos pesquisando em caminhos padrão (/ usr / local / bin, / usr / sbin, / sbin), ambientes virtuais em o projeto atual e os ambientes do Conda. Talvez você possa adicionar seu intérprete a um desses locais para que ele possa pegá-lo automaticamente. Mas estou apenas supondo.
Daniel F.
Essa é uma boa ideia @DanielF. Eu resolvo, mas configurando manualmente os diretórios que apontam para o ambiente do projeto. A $PATHideia não funcionou (na verdade é o que um workonscript deve fazer). Isso foi testado há algumas semanas, não tenho certeza se resolverá em novos lançamentos.
genuíno
4
Para encontrar seu virtualenv, python.venvPathprecisa ser definido.
Mahmoud Hanafy,
2
Em dezembro de 2017, com o código 1.18.1, o comando vem Python: Select Interpreterda paleta de comandos. Lutei por um tempo para pesquisar python workspacena lista de comandos ...
nngeek
35

Bastante simples com o VSCode mais recente, se você instalou a extensão oficial do Python para VSCode

Shift+ Command+P

Tipo: Python: Selecione Intérprete

Escolha seu ambiente virtual.

Site oficial

DingLi
fonte
14
Infelizmente, este comando falha ao listar envs virtuais locais.
Antonin,
@Antonin eu testei no meu vscode na versão mais recente, ele funciona. Você está no mac ou no sistema e qual é o seu erro?
DingLi
1
De fato, em um Mac, obrigado @DingLi, funcionou depois de configurar isto:"python.venvFolders": [ "${rootPath}", "envs", ".pyenv", ".direnv" ],
Antonin
1
@Antonin para os envs virtuais, veja a resposta do
ssword
2
Sim, eu realmente desejo que você, e todos os outros, parem de dizer "muito simples". Os envs virtuais não estão sendo listados, apenas intérpretes, versão macOS 2019.6. E esta é uma pergunta que diz virtualenv, não apenas interpretadores python. @ssword tem a resposta correta. Ou pelo menos espero que traga o resto da configuração baseada no virtualenv, que NÃO é apenas o executável python para usar.
JL Peyret de
34

Com a extensão Python mais recente para o código do Visual Studio, há uma configuração venvPath:

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

No Mac OS X, acesse Code > Preferences > Settingse role para baixo até Configuração do Python .

Procure "python.venvPath: "",e clique no lápis no lado esquerdo para abrir suas configurações de usuário. Finalmente, adicione o caminho para onde você armazena seus ambientes virtuais.

Se você estiver usando virtuanenvwrapper, ou se tiver colocado todas as configurações de env virtual em uma pasta, esta será a única para você.

Depois de configurar "python.venvPath", reinicie o VSC. Em seguida, abra a paleta de comandos e procure por "Python: Select Interpreter". Neste ponto, você deve ver o intérprete associado ao ambiente virtual que acabou de adicionar.

ssword
fonte
13

Outra maneira é abrir o VSC a partir de um terminal com o virtualenv definido e precisa executar F1 Python: Select Interpretere selecionar o virtualENV necessário

virtualENV

pm.calabrese
fonte
8
Isso não parece funcionar para mim. Eu tenho que ter o arquivo de configurações. Tem algo que estou perdendo?
McKay de
1
Usei esse método com sucesso, mas tive que fazer o código -a.
YoFlynn
1
Isso me deu o interpretador python certo, mas não encontrou o resto do meu venv. Adicionar meu nome de diretório venv "ve" a python.venvFolders corrigiu o problema.
user1055568
1
Meu comentário anterior estava errado. Eu estava tendo outros problemas que confundi por não encontrar venv.
user1055568
7

Resposta provisória. Eu coloquei o caminho absoluto do executável python do ambiente virtual também tem os pacotes. Em seguida, reiniciei o código do VS.

Estou tentando fazer com que $ {workspaceRoot} evite a codificação de caminhos absolutos, por favor me ajude se você conseguiu.

{
    "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 Jose
fonte
2
Eu levantei um problema em github.com/DonJayamanne/pythonVSCode/issues/148
Jesvin Jose
4

Consegui usar a configuração do espaço de trabalho que outras pessoas nesta página pedem.

Em Preferências, ⌘ + P, pesquise python.pythonPathna barra de pesquisa.

Você deve 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"

Em seguida, clique na guia CONFIGURAÇÕES DA ESPAÇO DE TRABALHO no lado direito da janela. Isso fará com que a configuração seja aplicável apenas ao espaço de trabalho em que você está.

Depois, clique no ícone de lápis próximo a "python.pythonPath". Isso deve copiar a configuração sobre as configurações do espaço de trabalho.

Altere o valor para algo como:

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

a) Modifique a configuração do caminho de env virtual padrão do Visual Studio Code. É chamado de "python.venvPath". Você faz isso acessando code-> settings e rolar para baixo para ver as configurações de python.

b) Reinicie o código VS

c) Agora, se você fizer Shift + Command + P e digitar Python: Selecione Interpreter, você deverá ver a lista de seus ambientes virtuais.

Ajay K
fonte
1

Parece estar (como em 2018.03) no code-insider, a diretiva foi introduzida chamada python.venvFolders:

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

Tudo que você precisa é adicionar o nome da pasta virtualenv.

Holms
fonte
1

No Mac OSX usando a versão de código 1.34.0 (1.34.0), tive que fazer o seguinte para que o VSCode reconhecesse os ambientes virtuais:

Localização do meu ambiente virtual (denominado ml_venv):

/Users/auser/.pyvenv/ml_venv

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

Eu adicionei a seguinte entrada em Settings.json: "python.venvPath": "/Users/auser/.pyvenv"

Reiniciei o IDE e agora pude ver o interpretador do meu ambiente virtual: insira a descrição da imagem aqui

b.sodhi
fonte
Usar o caminho absoluto é importante. Isso funcionou para mim. Obrigado
Alexander Suraphel
0

Peguei isso no Youtube Configurando o Python VS ... Venv

OK, o vídeo realmente não me ajudou muito, mas ... o primeiro comentário abaixo (da pessoa que postou o vídeo) faz muito sentido e é ouro puro.

Basicamente, abra o Terminal embutido do VS. Então source <your path>/activate.sh, da maneira usual, você escolhe um venv na linha de comando. Eu tenho uma função bash predefinida para encontrar e iniciar o arquivo de script correto e funcionou perfeitamente.

Citando esse comentário do YT diretamente (todos os créditos para aneuris ap ):

(você realmente só precisa das etapas 5 a 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 você pode notar, ele está falando activate.bat. Portanto, se funciona para mim em um Mac e também no Windows, é bem provável que seja bastante robusto e portátil. 😀

JL Peyret
fonte