Por que o pip do Python é redefinido para a versão 10.0.1 em cada novo ambiente virtual?

1

tl; dr: Por que a versão do pip é redefinida para 10.0.1 sempre que eu criar um novo ambiente virtual e não clonado automaticamente da minha instalação global 18.0?

Sempre que crio um novo ambiente virtual, sou informado de que 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

Executando pip -V fora de um ambiente virtual retorna

pip 18.0 from /usr/lib/python3.7/site-packages/pip (python 3.7)

Portanto, 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 o registro, o comando que eu corro para criar um novo ambiente virtual é:

$ python -m venv <venv>

Eu o instalei executando

$ pacman -S python python-pip

Estou executando no Arch e a saída de python -V é Python 3.7.0 .

    
por malan 24.08.2018 / 18:20

1 resposta

3

pip não é redefinido quando você cria um novo ambiente virtual. Quando você cria um novo ambiente virtual, venv executa uma nova instalação de pip e setuptools nesse ambiente. De onde vem a versão pip ? Quando você executa python -m venv , a instalação de pip é de responsabilidade do módulo ensurepip que inicializa uma nova instalação pip . Você pode verificar o que o pip version é empacotado com o Python 3.7:

$ python3 -c "import ensurepip; print(ensurepip.version())"
10.0.1

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 último pip foi da versão 10.0.1, então foi incluído ( 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ê quiser que o último pip seja instalado em um ambiente virtual novo, poderá alternar para virtualenv :

$ pip install --user virtualenv

ou instale todo o sistema usando pacman :

$ pacman -S python-virtualenv

virtualenv é atualizado com mais frequência do que o Python, portanto, a versão mais recente instala os pacotes mais recentes. Exemplo de uso:

$ virtualenv myenv --python=python3 --quiet
$ source myenv/bin/activate
(myenv) $ pip --version
pip 18.0 from /Users/hoefling/.virtualenvs/myenv/lib/python3.7/site-packages/pip (python 3.7)
    
por 25.08.2018 / 18:11