Virtualenv: pipx.y falta, en su lugar pip-xy presente

Creado en 15 mar. 2020  ·  4Comentarios  ·  Fuente: pypa/virtualenv

Asunto

En virtualenv 20.0.10 al menos cuando se crea un entorno virtualenv, la convención de nomenclatura del archivo de la versión principal de pip ha cambiado.

En 16.7.x había pip3.7 en 20.0.2, esto ha cambiado a pip-3.7 aunque todavía hay pip3 en ambos, en términos de patrones de automatización que proporcionan múltiples entornos y compilaciones. Puede haber muchas dependencias de compilación que usen el patrón pip${MAJOR_VERSION} .

Quizás agregar un enlace simbólico para respetar la convención de nomenclatura anterior puede evitar que muchas personas pasen muchas horas depurando.

Ambiente

  • SO: CentOS 8
  • SO Python: Python 3.6.8
  • El intérprete de Python que se utiliza para virtualenv es Python 3.7.6 compilado a partir de la fuente.
  • Lista de pips del 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

Reproducir

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 comentarios

Este es un efecto secundario de adoptar la biblioteca estándar que maneja la creación de scripts, variante de script agregada aquí https://bitbucket.org/pypa/distlib/commits/eedb3ae9233562e970dab2212892969bd87be01c. No estoy totalmente seguro de por qué 16.x los estaba agregando sin el guión ... es posible que deba verificar si pip escapa del comportamiento de distlibs, pero AFAIK pip también debería generar estilos similares.

Entonces, parece que aquí pip hace algo extraño, en comparación con el resto, aunque tal vez esté en línea con la forma en que las distribuciones de Linux manejan las cosas y las versiones de Python:

Me parece que nunca estandarizamos cómo las herramientas deben definir los scripts versionados y cómo el frontend puede comunicarse con el backend que así lo desea. ¿O debería ser una opción de interfaz? @pfmoore @pradyunsg, los pensamientos se sienten como si deberían ser parte de PEP-517 en algún lugar 🤷‍♂

Por ahora, creo que es una solución para generar también pipx.y y pip-x.y ...

Me parece que nunca estandarizamos cómo las herramientas deben definir los scripts versionados y cómo el frontend puede comunicarse con el backend que así lo desea.

Esta es básicamente la situación.

Pip genera versiones que no coinciden con distlib porque ese era el formato que pip había usado antes de cambiar a distlib, y la compatibilidad con versiones anteriores era una preocupación (IIRC).

Para una solución a más largo plazo, esto probablemente debería estar estandarizado (en realidad, todo el mecanismo console-scripts no está estandarizado, por lo que probablemente necesite un nuevo PEP que cubra toda esta área).

Hola, se ha publicado una solución para este problema a través de virtualenv 20.0.11; ver https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18). Inténtelo e infórmenos si su problema no ha sido resuelto; si no es así, comente aquí y reabriremos el ticket. Queremos disculparnos por las molestias que esto le ha causado y agradecer su paciencia mientras resolvemos los errores inesperados con esta nueva versión importante.
thanks

¿Fue útil esta página
0 / 5 - 0 calificaciones