Virtualenv: pipx.y fehlt, stattdessen ist pip-xy vorhanden

Erstellt am 15. März 2020  ·  4Kommentare  ·  Quelle: pypa/virtualenv

Problem

In virtualenv 20.0.10 hat sich zumindest beim Erstellen einer virtualenv-Umgebung die Namenskonvention der pip-Hauptversionsdatei geändert.

In 16.7.x gab es in pip3.7 20.0.2 pip-3.7 geändert, obwohl es in beiden immer noch pip3 , was Automatisierungsmuster betrifft, die mehrere Umgebungen und Builds bereitstellen Möglicherweise gibt es viele Build-Abhängigkeiten, die das Muster pip${MAJOR_VERSION} .

Vielleicht kann das Hinzufügen eines Symlinks zu Ehren der älteren Namenskonvention verhindern, dass viele Leute viele Stunden mit dem Debuggen verbringen.

Umgebung

  • Betriebssystem: CentOS 8
  • Betriebssystem Python: Python 3.6.8
  • Der für die virtuelle Umgebung verwendete Python-Interpretor ist Python 3.7.6, der aus dem Quellcode kompiliert wurde.
  • System-Pip-Liste
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

Reproduzieren

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

Alle 4 Kommentare

Dies ist ein Nebeneffekt bei der Übernahme der Standardbibliothek für die Skripterstellung. Die hier hinzugefügte Skriptvariante

Es scheint also, dass Pip hier etwas Seltsames tut, verglichen mit Rest, obwohl es vielleicht damit übereinstimmt, wie Linux-Distributionen mit Dingen umgehen und wie Python selbst Versionen:

Mir scheint, wir haben nie standardisiert, wie Tools versionierte Skripte definieren sollen und wie das Frontend mit dem gewünschten Backend kommunizieren kann. Oder sollte eine Frontend-Option sein? @pfmoore @pradyunsg Gedanken scheinen irgendwo Teil von PEP-517 zu sein 🤷‍♂

Im Moment denke ich, dass es eine Problemumgehung ist, auch pipx.y und pip-x.y zu generieren ...

Mir scheint, wir haben nie standardisiert, wie Tools versionierte Skripte definieren sollen und wie das Frontend mit dem gewünschten Backend kommunizieren kann.

Dies ist im Grunde die Situation.

Pip generiert Versionen, die nicht mit distlib übereinstimmen, da dies das Format war, das pip verwendet hatte, bevor wir zu distlib gewechselt sind, und die Abwärtskompatibilität ein Problem darstellte (IIRC).

Für eine längerfristige Lösung sollte dies wahrscheinlich standardisiert werden (tatsächlich ist der gesamte console-scripts -Mechanismus nicht standardisiert, sodass wahrscheinlich ein neuer PEP erforderlich ist, der den gesamten Bereich abdeckt).

Hallo, ein Fix für dieses Problem wurde über virtualenv 20.0.11 veröffentlicht. Siehe https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18). Bitte versuchen Sie es und melden Sie sich zurück, wenn Ihr Problem nicht behoben wurde. Wenn nicht, kommentieren Sie bitte hier und wir öffnen das Ticket erneut. Wir möchten uns für die Unannehmlichkeiten entschuldigen, die Ihnen dadurch entstanden sind, und uns für Ihre Geduld bedanken, während wir die unerwarteten Fehler mit dieser neuen Hauptversion beheben.
thanks

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen