<p>pipenv não está respeitando o virtualenv ativado atual e criando um novo env</p>

Criado em 2 nov. 2017  ·  3Comentários  ·  Fonte: pypa/pipenv

Não tenho muita certeza se esse é um comportamento esperado, mas do ponto de vista de uso, isso parece ser um bug:

Edição:

pipenv install <package_name> está criando um novo virtualenv, embora o virtualenv seja ativado usando pipenv shell .

Quando isso ocorre:

se não estivermos no mesmo diretório onde Pipfile está localizado.

Descreva o seu ambiente

  1. Tipo de sistema operacional: Linux (Ubuntu 16.04)
  2. Versão Python: $ python -V == 3.6.3
  3. Versão do Pipenv: $ pipenv --version == versão 8.3.1

Resultado esperado

Se estivermos em um shell virtualenv ativado, (independentemente do pwd ) pipenv install deve respeitá-lo e atualizar corretamente o Pipfile e não deve criar um novo Pipfile .

Resultado atual

Um novo Pipfile é criado, mesmo se no mesmo virtualenv ativado, mas em um diretório diferente.

Passos para replicar

$ mkdir -p testproject/app
$ cd  testproject/app
$ pipenv install flask
$ pipenv shell # environment gets activated here
$ <my_new_environment>$  cd ..  # Now we are inside testproject
$ pipenv install requests
$ New Pipfile gets created here

Comentários muito úteis

@erinxocon E

O próprio @kennethreitz disse na página inicial do pipenv:

Você não precisa mais usar pip e virtualenv separadamente. Eles trabalham juntos.

pipenv deve não apenas criar o virtualenv, como você disse, mas também gerenciá- lo. Novamente, é mencionado explicitamente na página inicial (ênfase minha):

Ele cria e gerencia automaticamente um virtualenv para seus projetos, bem como adiciona / remove pacotes de seu Pipfile conforme você instala / desinstala pacotes.

Antigamente, quando usávamos virtualenv e pip separadamente, podíamos navegar para qualquer diretório e pip install , e o pacote seria instalado corretamente no virtualenv, o fato de que pipenv não faz isso _enquanto um pipenv -managed virtualenv is enabled_ quebra a expectativa do usuário.

Todos 3 comentários

Oi @ansrivas! Este não é o fluxo pretendido de pipenv. O Pipenv usará um ambiente virtual se se encontrar em um inicialmente, mas não em todas as chamadas subsequentes. Você teria um ninho de virtualenvs bastante peludo! Se você navegar para uma pasta que está fora do projeto, o pipenv criará um novo pipfile. Se você quiser apenas instalar alguns pacotes fora da pasta, mas dentro do ambiente virtual que você ativou no subshell, você pode fazer pipenv shell e então pip install requests . Pipenv pode ser usado para criar um virtualenv para o seu projeto, mas ele por si só não é um gerenciador de virtualenv, é um gerente de projeto.

@erinxocon E

O próprio @kennethreitz disse na página inicial do pipenv:

Você não precisa mais usar pip e virtualenv separadamente. Eles trabalham juntos.

pipenv deve não apenas criar o virtualenv, como você disse, mas também gerenciá- lo. Novamente, é mencionado explicitamente na página inicial (ênfase minha):

Ele cria e gerencia automaticamente um virtualenv para seus projetos, bem como adiciona / remove pacotes de seu Pipfile conforme você instala / desinstala pacotes.

Antigamente, quando usávamos virtualenv e pip separadamente, podíamos navegar para qualquer diretório e pip install , e o pacote seria instalado corretamente no virtualenv, o fato de que pipenv não faz isso _enquanto um pipenv -managed virtualenv is enabled_ quebra a expectativa do usuário.

Estou concordando com @ksze sobre isso.

Há uma expectativa de que pipenv deve gerenciar o virtualenv ativo.

Seguindo linhas semelhantes ... Devo ser capaz de usar o -r para instalar um Pipfile externo ou Pipenv.lock no virtualenv atual, e não criar outro.

Esta página foi útil?
0 / 5 - 0 avaliações