Virtualenv: pipx.y manquant, à la place pip-xy présent

Créé le 15 mars 2020  ·  4Commentaires  ·  Source: pypa/virtualenv

Publier

Dans virtualenv 20.0.10 au moins lorsqu'un environnement virtualenv est créé, la convention de dénomination du fichier de version majeure de pip a changé.

Dans 16.7.x, il y avait pip3.7 dans 20.0.2 cela a changé en pip-3.7 bien qu'il y ait toujours pip3 dans les deux, en termes de modèles d'automatisation qui fournissent plusieurs environnements et builds il peut y avoir de nombreuses dépendances de construction qui utilisent le modèle pip${MAJOR_VERSION} .

Peut-être que l'ajout d'un lien symbolique pour honorer l'ancienne convention de dénomination peut empêcher de nombreuses personnes de passer de nombreuses heures à déboguer.

Environnement

  • Système d'exploitation: CentOS 8
  • Système d'exploitation Python: Python 3.6.8
  • L'interpréteur python utilisé pour virtualenv est Python 3.7.6 compilé à partir des sources.
  • Liste des pip système
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

Reproduire

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

Tous les 4 commentaires

C'est un effet secondaire de l'adoption de la bibliothèque standard qui gère la création de script, variante de script ajoutée ici https://bitbucket.org/pypa/distlib/commits/eedb3ae9233562e970dab2212892969bd87be01c. Je ne sais pas vraiment pourquoi 16.x les ajoutait sans le tiret ... il faudra peut-être vérifier si pip échappe au comportement de distlibs, mais AFAIK pip devrait également générer des styles similaires.

Il semble donc que pip fasse quelque chose d'étrange, par rapport au repos, bien que cela soit peut-être conforme à la façon dont les distributions Linux gèrent les choses et à la façon dont python lui-même versions:

Il me semble que nous n'avons jamais normalisé la façon dont les outils doivent définir les scripts versionnés et comment le frontend peut communiquer au backend qu'il le souhaite. Ou devrait-il être une option frontale? @pfmoore @pradyunsg pense que devrait faire partie de PEP-517 quelque part 🤷‍♂

Pour l'instant, je pense que c'est une solution de contournement pour générer également pipx.y et pip-x.y ...

Il me semble que nous n'avons jamais normalisé la façon dont les outils doivent définir les scripts versionnés et comment le frontend peut communiquer au backend qu'il le souhaite.

Telle est essentiellement la situation.

Pip génère des versions qui ne correspondent pas à distlib car c'était le format utilisé par pip avant de passer à distlib, et la rétrocompatibilité était un problème (IIRC).

Pour une solution à plus long terme, cela devrait probablement être normalisé (en fait, l'ensemble du mécanisme console-scripts n'est pas normalisé, il a donc probablement besoin d'un nouveau PEP couvrant l'ensemble de ce domaine).

Bonjour, un correctif pour ce problème a été publié via virtualenv 20.0.11; voir https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18). Veuillez essayer et signaler si votre problème n'a pas été résolu; sinon, veuillez commenter ici, et nous rouvrirons le billet. Nous vous prions de nous excuser pour les inconvénients que cela vous a occasionnés et vous remercions d'avoir patienté pendant que nous résolvons les bogues inattendus avec cette nouvelle version majeure.
thanks

Cette page vous a été utile?
0 / 5 - 0 notes