tl; dr: Por que a versão do pip é redefinida para 10.0.1 toda vez que eu crio um novo ambiente virtual e não é clonado automaticamente da minha instalação global 18.0?
Toda vez que crio um novo ambiente virtual me dizem que o meu pip
está desatualizado. eu corro
$ pip install --upgrade pip
E obtenha a seguinte saída:
Collecting pip
Using cached https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 10.0.1
Uninstalling pip-10.0.1:
Successfully uninstalled pip-10.0.1
Successfully installed pip-18.0
A execução pip -V
fora de um ambiente virtual retorna
pip 18.0 from /usr/lib/python3.7/site-packages/pip (python 3.7)
Então a versão desatualizada só é criada quando eu crio um novo ambiente virtual.
Este é um recurso do módulo de ambiente virtual do python?
Para constar, o comando que executo para criar um novo ambiente virtual é:
$ python -m venv <venv>
Eu instalei executando
$ pacman -S python python-pip
Estou executando-o no Arch e a saída python -V
é Python 3.7.0
.
pip
não é redefinido quando você cria um novo ambiente virtual. Ao criar um novo ambiente virtual,venv
realiza uma nova instalação depip
esetuptools
neste ambiente. De onde vem apip
versão? Quando você executapython -m venv
, a instalação depip
é responsabilidade do móduloensurepip
que inicializa uma novapip
instalação. Você pode verificar qualpip
versão está empacotada com o Python 3.7:Isso não é nada que você possa atualizar ou modificar sozinho; o módulo faz parte da biblioteca padrão. Quando o Python 3.7 foi lançado, o mais recente
pip
era a versão 10.0.1, então foi empacotado ( problema relacionado ). A versão 18 foi lançada mais tarde. Da próxima vez, provavelmente será atualizado na próxima versão do Python (3.7.1).Alternativa: usando
virtualenv
Se você deseja que o mais recente
pip
seja instalado em um novo ambiente virtual, você pode alternar paravirtualenv
:ou instale em todo o sistema usando
pacman
:virtualenv
é atualizado com mais frequência do que o Python, portanto, a versão mais recente instala os pacotes mais recentes. Exemplo de uso: