Virtualenv: pipx.y hilang, sebagai gantinya pip-xy ada

Dibuat pada 15 Mar 2020  ·  4Komentar  ·  Sumber: pypa/virtualenv

Isu

Di virtualenv 20.0.10 setidaknya ketika lingkungan virtualenv dibuat, konvensi penamaan file versi utama pip telah berubah.

Di 16.7.x ada pip3.7 di 20.0.2 ini telah berubah menjadi pip-3.7 meskipun masih ada pip3 di keduanya, dalam hal pola otomatisasi yang menyediakan banyak lingkungan dan bangunan mungkin ada banyak dependensi build yang menggunakan pola pip${MAJOR_VERSION} .

Mungkin menambahkan symlink untuk menghormati konvensi penamaan yang lebih lama dapat mencegah banyak orang menghabiskan waktu berjam-jam untuk debugging.

Lingkungan Hidup

  • OS: CentOS 8
  • OS Python: Python 3.6.8
  • Penafsir python yang digunakan untuk virtualenv adalah Python 3.7.6 yang dikompilasi dari sumber.
  • Daftar pip sistem
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

Reproduksi

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

Semua 4 komentar

Ini adalah efek samping dari mengadopsi pustaka standar yang menangani pembuatan skrip, varian skrip ditambahkan di sini https://bitbucket.org/pypa/distlib/commits/eedb3ae9233562e970dab2212892969bd87be01c. Tidak sepenuhnya yakin mengapa 16.x menambahkannya tanpa tanda hubung ... mungkin perlu memeriksa apakah pip lolos dari perilaku distlibs, tetapi pip AFAIK juga harus menghasilkan gaya yang serupa.

Jadi tampaknya di sini pip melakukan sesuatu yang aneh, dibandingkan dengan yang lain, meskipun mungkin itu sejalan dengan bagaimana distribusi Linux menangani berbagai hal, dan bagaimana versi python itu sendiri:

Sepertinya kami tidak pernah menstandarkan bagaimana alat harus mendefinisikan skrip berversi, dan bagaimana frontend dapat berkomunikasi ke backend yang diinginkannya seperti itu. Atau harus menjadi opsi frontend? @pfmoore @pradyunsg pemikirannya terasa seperti harus menjadi bagian dari PEP-517 di suatu tempat 🤷‍♂

Untuk saat ini, saya pikir itu adalah solusi untuk juga menghasilkan pipx.y dan pip-x.y ...

Sepertinya kami tidak pernah menstandarkan bagaimana alat harus mendefinisikan skrip berversi, dan bagaimana frontend dapat berkomunikasi ke backend yang diinginkannya seperti itu.

Ini pada dasarnya adalah situasinya.

Pip menghasilkan versi yang tidak cocok dengan distlib karena itu adalah format yang digunakan pip sebelum kami beralih ke distlib, dan kompatibilitas mundur menjadi perhatian (IIRC).

Untuk solusi jangka panjang, ini mungkin harus distandarisasi (sebenarnya, seluruh mekanisme console-scripts tidak distandarisasi, jadi mungkin diperlukan PEP baru yang mencakup seluruh area ini).

Halo, perbaikan untuk masalah ini telah dirilis melalui virtualenv 20.0.11; lihat https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18). Silakan coba dan laporkan kembali jika masalah Anda belum teratasi; jika tidak, silakan beri komentar di sini, dan kami akan membuka kembali tiketnya. Kami ingin meminta maaf atas ketidaknyamanan yang ditimbulkan dan berterima kasih atas kesabaran Anda sementara kami menyelesaikan bug yang tidak terduga dengan rilis besar yang baru ini.
thanks

Apakah halaman ini membantu?
0 / 5 - 0 peringkat