Pip: ~ / .pip / pip.conf e conflito virtualenv

Criado em 2 out. 2014  ·  5Comentários  ·  Fonte: pypa/pip

Não consegui encontrar esse problema documentado em nenhum lugar, mas se você especificar install-option em ~/.pip/pip.conf , ele não será substituído por virtualenv . Eu especifico --prefix=/path/to/somwhere em install-option devido às restrições do usuário no meu PC de trabalho e, com ele definido, qualquer instalação em um venv (com $PIP_RESPECT_VIRTUALENV habilitado) ainda é instalado no caminho especificado por install-option . Este não era um comportamento esperado para mim, mas não tenho certeza se ignorar pip.conf é o curso de ação correto. Talvez seja melhor documentar esse comportamento. Outra coisa estranha é que você não pode desinstalar enquanto estiver no virtualenv, pois o pacote não está instalado no venv e o pip não pode encontrá-lo.

Isso aconteceu comigo ao usar pip 1.4.1 e 1.5.6 e virtualenv 1.11.6.

virtualenv needs repro bug

Comentários muito úteis

Minha solução atual é a de definir $PIP_CONFIG_FILE a /dev/null via virtualenvwrapper 's postactivate gancho e desarmar-lo em postdeactivate .

Todos 5 comentários

Minha solução atual é a de definir $PIP_CONFIG_FILE a /dev/null via virtualenvwrapper 's postactivate gancho e desarmar-lo em postdeactivate .

Este problema ainda está presente. No meu caso, eu gostaria de usar instalações de --user quando não em um venv (através da configuração em ~/.config/pip/pip.conf , mas instalações "normais" (em-venv) quando em um venv (faça --user instalações até fazem sentido em um venv?).

Duas soluções possíveis (das quais apenas a primeira pode realmente ser implementada por pip, mas também posso começar a discussão aqui) são

  • fornecer um local de arquivo de configuração que só seja usado fora do venvs ( ~/.config/pip/pip-novenv.conf ou qualquer outro), ou
  • tornar --user um ambiente autônomo em um venv (novamente, não tenho certeza se --user + venv faz sentido: há apenas um ~/.local/lib/pythonX.Y então todo o isolamento é quebrado lá).

Problema ainda presente no Python 3.5.3.

É muito irônico e frustrante que se alguém tenta ser cuidadoso com o ambiente, a ponto de usar ambientes virtuais e instalações de usuário em pip.conf, acaba com um sistema que não funciona.

Eu estava tentando evitar que membros da equipe usassem sudo pip . Está ficando cada vez mais difícil.

Não é um bug em virtualenv - que não define PIP_CONFIG_FILE=/dev/null ao usar alguma opção?
Oh, fui mordido por isso hoje.

Alguém pode fornecer instruções claras sobre como reproduzir isso?

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