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
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
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:
pipx.y
; está un poco apagado ya que el script de la consola está escrito en el momento de la compilación, por lo que, en el caso de la rueda universal, si lo instala en un Python diferente (por ejemplo, rueda construida con 3.8, instalar en 2.7), pip tiene que reescribir el número de versión para la versión de Python de destino de alguna manera no respetar lo que está definido dentro de la asignación de scripts de la consola y alterar el nombre; en particular, también utiliza un formato pipx.y
.pip-x.y
, según https://bitbucket.org/pypa/distlib/commits/eedb3ae9233562e970dab2212892969bd87be01cpip-x.y
, consulte https://github.com/pypa/setuptools/blob/master/setup.py#L46 -L47Me 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.