Virtualenv: pipx.y ausente, em vez de pip-xy presente

Criado em 15 mar. 2020  ·  4Comentários  ·  Fonte: pypa/virtualenv

Emitir

No virtualenv 20.0.10, pelo menos quando um ambiente virtualenv é criado, a convenção de nomenclatura do arquivo da versão principal do pip mudou.

Em 16.7.x havia pip3.7 em 20.0.2 que mudou para pip-3.7 embora ainda haja pip3 em ambos, em termos de padrões de automação que provisionam vários ambientes e compilações pode haver muitas dependências de construção que usam o padrão pip${MAJOR_VERSION} .

Talvez adicionar um link simbólico para honrar a convenção de nomenclatura mais antiga pode evitar que muitas pessoas gastem muitas horas depurando.

Meio Ambiente

  • SO: CentOS 8
  • OS Python: Python 3.6.8
  • O interpretador python usado para o virtualenv é o Python 3.7.6 compilado a partir do código-fonte.
  • Lista de pip do sistema
pip list --format=columns

Package             Version
------------------- -------
appdirs             1.4.3
asn1crypto          0.24.0
cffi                1.11.5
configobj           5.0.6
cryptography        2.3
dbus-python         1.2.4
decorator           4.2.1
distlib             0.3.0
filelock            3.0.12
gpg                 1.10.0
idna                2.5
importlib-metadata  1.5.0
importlib-resources 1.3.1
iniparse            0.4
isc                 2.0
netifaces           0.10.6
pciutils            2.3.6
perf                0.1
pip                 9.0.3
ply                 3.9
pycparser           2.14
pygobject           3.28.3
pyOpenSSL           18.0.0
pyparsing           2.1.10
python-dateutil     2.6.1
python-dmidecode    3.12.2
python-linux-procfs 0.6
pyudev              0.21.0
rhnlib              2.8.6
rpm                 4.14.2
schedutils          0.6
selinux             2.9
sepolicy            1.1
setools             4.2.2
setuptools          39.2.0
six                 1.11.0
slip                0.6.4
slip.dbus           0.6.4
syspurpose          1.25.17
zipp                3.1.0

Reproduzir

cd /opt
pip install virtualenv==20.0.10

pip list --format=columns | grep virtualenv
virtualenv          20.0.10

virtualenv --python=/opt/python_virtualenv/versions/3.7.6/bin/python3.7 venv_20.0.10

ls -al /opt/venv_20.0.10/bin | grep pip
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip3
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip-3.7

pip uninstall virtualenv
pip install virtualenv==16.7.10
virtualenv --python=/opt/python_virtualenv/versions/3.7.6/bin/python3.7 venv_16.7.10

ls -al /opt/venv_16.7.10/bin | grep pip
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip3
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip3.7
ls -al /opt/venv_20.0.10/bin
total 68
drwxr-xr-x. 2 root root 4096 Mar 15 14:08 .
drwxr-xr-x. 4 root root 4096 Mar 15 14:08 ..
-rw-r--r--. 1 root root 2206 Mar 15 14:08 activate
-rw-r--r--. 1 root root 1425 Mar 15 14:08 activate.csh
-rw-r--r--. 1 root root 3056 Mar 15 14:08 activate.fish
-rw-r--r--. 1 root root 1751 Mar 15 14:08 activate.ps1
-rw-r--r--. 1 root root 1199 Mar 15 14:08 activate_this.py
-rw-r--r--. 1 root root 1147 Mar 15 14:08 activate.xsh
-rwxr-xr-x. 1 root root  242 Mar 15 14:08 easy_install
-rwxr-xr-x. 1 root root  242 Mar 15 14:08 easy_install3
-rwxr-xr-x. 1 root root  242 Mar 15 14:08 easy_install-3.7
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip3
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip-3.7
lrwxrwxrwx. 1 root root   51 Mar 15 14:08 python -> /opt/python_virtualenv/versions/3.7.6/bin/python3.7
lrwxrwxrwx. 1 root root    6 Mar 15 14:08 python3 -> python
lrwxrwxrwx. 1 root root    6 Mar 15 14:08 python3.7 -> python
-rwxr-xr-x. 1 root root  220 Mar 15 14:08 wheel
-rwxr-xr-x. 1 root root  220 Mar 15 14:08 wheel3
-rwxr-xr-x. 1 root root  220 Mar 15 14:08 wheel-3.7


ls -al /opt/venv_16.7.10/bin
total 15360
drwxr-xr-x. 2 root root     4096 Mar 15 14:10 .
drwxr-xr-x. 5 root root     4096 Mar 15 14:10 ..
-rw-r--r--. 1 root root     2206 Mar 15 14:10 activate
-rw-r--r--. 1 root root     1425 Mar 15 14:10 activate.csh
-rw-r--r--. 1 root root     3090 Mar 15 14:10 activate.fish
-rw-r--r--. 1 root root     1751 Mar 15 14:10 activate.ps1
-rw-r--r--. 1 root root     1517 Mar 15 14:10 activate_this.py
-rw-r--r--. 1 root root     1147 Mar 15 14:10 activate.xsh
-rwxr-xr-x. 1 root root      245 Mar 15 14:10 easy_install
-rwxr-xr-x. 1 root root      245 Mar 15 14:10 easy_install-3.7
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip3
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip3.7
lrwxrwxrwx. 1 root root        9 Mar 15 14:10 python -> python3.7
lrwxrwxrwx. 1 root root        9 Mar 15 14:10 python3 -> python3.7
-rwxr-xr-x. 1 root root 15664944 Mar 15 14:10 python3.7
-rwxr-xr-x. 1 root root     2335 Mar 15 14:10 python-config
-rwxr-xr-x. 1 root root      223 Mar 15 14:10 wheel
bug

Todos 4 comentários

Este é um efeito colateral da adoção da biblioteca padrão que lida com a criação de script, variante de script adicionada aqui https://bitbucket.org/pypa/distlib/commits/eedb3ae9233562e970dab2212892969bd87be01c. Não tenho certeza de por que o 16.x os estava adicionando sem o traço ... pode ser necessário verificar se o pip escapa do comportamento do distlibs, mas o pip AFAIK também deve gerar estilos semelhantes.

Portanto, parece que aqui pip faz algo estranho, em comparação com o resto, embora talvez esteja de acordo com a forma como as distribuições do Linux lidam com as coisas e como o próprio python se versões:

Parece-me que nunca padronizamos como as ferramentas devem definir scripts versionados e como o front-end pode comunicar ao back-end que ele deseja. Ou deveria ser uma opção de front-end? @pfmoore @pradyunsg pensamentos parecem fazer parte do PEP-517 em algum lugar 🤷‍♂

Por enquanto, acho que é uma solução alternativa para gerar também pipx.y e pip-x.y ...

Parece-me que nunca padronizamos como as ferramentas devem definir scripts versionados e como o front-end pode comunicar ao back-end que ele deseja.

Esta é basicamente a situação.

Pip gera versões que não correspondem a distlib porque esse era o formato que pip havia usado antes de mudarmos para distlib, e a compatibilidade com versões anteriores era uma preocupação (IIRC).

Para uma solução de longo prazo, isso provavelmente deveria ser padronizado (na verdade, todo o mecanismo console-scripts não é padronizado, então provavelmente precisa de um novo PEP cobrindo toda esta área).

Olá, uma correção para esse problema foi lançada via virtualenv 20.0.11; consulte https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18). Por favor, experimente e relate novamente se o seu problema não foi resolvido; caso contrário, comente aqui e reabriremos o tíquete. Pedimos desculpas pela inconveniência que isso causou a você e agradecemos por sua paciência enquanto resolvemos os bugs inesperados com esta nova versão principal.
thanks

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