قضية
في virtualenv 20.0.10 على الأقل عند إنشاء بيئة virtualenv ، تغير اصطلاح التسمية لملف الإصدار الرئيسي من نقطة.
في 16.7.x ، كان هناك pip3.7
في 20.0.2 وقد تغير هذا إلى pip-3.7
على الرغم من أنه لا يزال هناك pip3
في كليهما ، من حيث أنماط الأتمتة التي توفر بيئات وبنيات متعددة قد يكون هناك العديد من تبعيات البناء التي تستخدم النمط pip${MAJOR_VERSION}
.
ربما تؤدي إضافة ارتباط رمزي لتكريم اصطلاح التسمية الأقدم إلى منع العديد من الأشخاص من قضاء ساعات طويلة في تصحيح الأخطاء.
بيئة
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
إعادة إنتاج
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
هذا هو أحد الآثار الجانبية لاعتماد المكتبة القياسية التي تتعامل مع إنشاء البرنامج النصي ، تمت إضافة متغير البرنامج النصي هنا https://bitbucket.org/pypa/distlib/commits/eedb3ae9233562e970dab2212892969bd87be01c. لست متأكدًا تمامًا من سبب قيام 16.x بإضافتها بدون شرطة ... قد تحتاج إلى التحقق مما إذا كانت النقطة تتسرب من سلوك التوزيعات ، ولكن يجب أن تولد نقطة AFAIK أيضًا أنماطًا مماثلة.
لذلك يبدو أن النقطة تقوم بشيء غريب ، مقارنة بالباقي ، على الرغم من أنها ربما تتماشى مع كيفية تعامل توزيعات Linux مع الأشياء ، وكيفية إصدارات python نفسها:
pipx.y
؛ إنه بعيد بعض الشيء حيث يتم كتابة البرنامج النصي لوحدة التحكم في وقت الإنشاء ، لذا في حالة وجود العجلة العامة إذا قمت بالتثبيت على بيثون مختلف (على سبيل المثال ، تم تصميم العجلة بـ 3.8 ، والتثبيت على 2.7) ، يجب على النقطة إعادة كتابة رقم الإصدار لاستهداف إصدار بايثون ، بطريقة ما لا تحترم ما تم تعريفه في تعيين البرنامج النصي لوحدة التحكم ، وتغيير الاسم ؛ بشكل خاص ، يستخدم أيضًا تنسيق pipx.y
.pip-x.y
، لكل https://bitbucket.org/pypa/distlib/commits/eedb3ae9233562e970dab2212892969bd87be01cpip-x.y
أيضًا ، راجع https://github.com/pypa/setuptools/blob/master/setup.py#L46 -L47يبدو لي أننا لم نقم مطلقًا بتوحيد الكيفية التي يجب أن تحدد بها الأدوات البرامج النصية ذات الإصدار ، وكيف يمكن للواجهة الأمامية التواصل مع الواجهة الخلفية التي تريدها. أم يجب أن يكون خيار الواجهة الأمامية؟ pfmoorepradyunsg تبدو الأفكار وكأنها يجب أن تكون جزءًا من PEP-517 في مكان ما 🤷♂
في الوقت الحالي ، أعتقد أنه حل بديل لإنشاء pipx.y
و pip-x.y
...
يبدو لي أننا لم نقم مطلقًا بتوحيد الكيفية التي يجب أن تحدد بها الأدوات البرامج النصية ذات الإصدار ، وكيف يمكن للواجهة الأمامية التواصل مع الواجهة الخلفية التي تريدها.
هذا هو الوضع في الأساس.
ينشئ Pip إصدارات لا تتطابق مع distlib لأن هذا هو التنسيق الذي استخدمته نقطة قبل أن ننتقل إلى distlib ، وكان التوافق مع الإصدارات السابقة مصدر قلق (IIRC).
للحصول على حل طويل المدى ، من المحتمل أن يكون هذا موحدًا (في الواقع ، آلية console-scripts
بالكامل ليست موحدة ، لذلك ربما تحتاج إلى PEP جديد يغطي كامل هذه المنطقة).
مرحبًا ، تم إصدار حل لهذه المشكلة عبر Virtualenv 20.0.11 ؛ راجع https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18). يرجى المحاولة والإبلاغ إذا لم تتم معالجة مشكلتك ؛ إذا لم يكن كذلك ، يرجى التعليق هنا ، وسوف نعيد فتح التذكرة. نود أن نعتذر عن الإزعاج الذي سببه لك هذا ونقول شكرًا على تحلينا بالصبر أثناء قيامنا بحل الأخطاء غير المتوقعة في هذا الإصدار الرئيسي الجديد.