يحاول pip install numpy
on python 2.7 تثبيت 1.17 numpy ، مما أسقط دعم python 2.7. هذا يتعارض مع الوظيفة الموضحة في NEP 14 ، والتي تنص على:
... سيستمر
pip install numpy
في Python 2 في تقديم آخر إصدار عملي إلى الأبد ...
إصدار النقطة: 19.2.2
الثعبان: 2.7.15 | Anaconda، Inc. | (افتراضي ، 23 أكتوبر 2018 ، 18:31:10) n [GCC 7.3.0]
يبدو أن هناك خطأ في النقطة أو setuptools الذي يسبب ذلك ، هل يمكنك محاولة ترقية النقطة؟ (انظر أيضًا gh-13911 الذي أتوقع أنه نسخة مكررة). ربما يمكنك ترقية النقطة باستخدام النقطة نفسها: python -m pip install --upgrade pip
و python -m pip install --upgrade setuptools
؟
السؤال الحقيقي هو لماذا تستخدم Python 2.7
السؤال الحقيقي هو لماذا تستخدم Python 2.7
هناك الكثير من الأسباب الوجيهة للاستمرار في تشغيل الإصدار 2.7 ، من فضلك لا تبدأ هذا النقاش هنا.
يبدو أن هناك خطأ في النقطة أو setuptools الذي يسبب ذلك ، هل يمكنك محاولة ترقية النقطة؟ (انظر أيضًا gh-13911 الذي أتوقع أنه نسخة مكررة). ربما يمكنك ترقية النقطة باستخدام النقطة نفسها:
python -m pip install --upgrade pip
وpython -m pip install --upgrade setuptools
؟
أقوم بتشغيل أحدث إصدارات كلاهما - pip 19.2.2 و setuptools 41.1.0.
السؤال الحقيقي هو لماذا تستخدم Python 2.7
هناك الكثير من الأسباب الوجيهة للاستمرار في تشغيل الإصدار 2.7 ، من فضلك لا تبدأ هذا النقاش هنا.
في الواقع هناك. في حالتي ، أحاول تشغيل برنامج تحليل علمي مطور أكاديميًا لم يتم نقله إلى py3.
لكن النقطة هنا ليست ما إذا كان يجب أن أستخدم Python 2.7 أم لا ، إنها أن numpy قدمت بيانًا رسميًا للوظيفة المتوقعة ، وهي ليست الوظيفة الحقيقية. هذا ، في رأيي ، هو الخطأ.
لقد لاحظت أمس أن النقطة لن تقوم بتثبيت pytest 5.0.1 لـ Python 2.7 لأن 2.7 لم تكن مدعومة ، لذا فإن النقطة تعمل بشكل صحيح في بعض الحالات. أتساءل عما إذا كانت هناك بعض المعلومات في مكان ما تحتاج إلى تحديث لـ 1.17؟
يمكنك تجربة python2.7 -mpip
للتأكد من أن النقطة تعرف الإصدار الذي يعمل. يبدو أيضًا أنك تستخدم Anaconda ، والذي قد يكون من المضاعفات عند مزجه مع Pip.
ماذا يظهر which pip
؟
هممم ، على جهازي ، تعمل النقطة 18.1 و setuptools 41.0.1 بشكل جيد (كلا الوضعين الثنائي وليس الوضع الثنائي). الترقية إلى 19.2.2 و 41.1.0 لا تغير أي شيء بالنسبة لي. إصدار Python هو 2.7.16+
(debian).
كما يلاحظ تشاك ، أفترض أنك تأكد من استخدام python2.7 -mpip
بدلاً من pip
للتأكد من حصولك على أحدث إصدار مثبت (في حال كنت تستخدم --user
أو لديك آخر نسخة نقطة حول لسبب ما.)؟
سيكون من الجيد حقًا فهم سبب هذا بالضبط.
IPetrik هل ستكون قادرًا على تجميع مثال قابل للتكرار تمامًا؟ أنت تستخدم أناكوندا ، لذلك شيء مثل:
conda create -n py27-empty
conda activate py27-empty
conda install pip
# Some diagnostics
which pip
pip --version
conda list setuptools
pip install numpy
لقد جربت عدة أشكال مختلفة من هذا ، لكن لا يمكنني إعادة إظهار مشكلتك.
بعد محاولة إعداد مثال بسيط ، اكتشفت المشكلة: نحن نستخدم خادم التخزين المؤقت devpi PyPI المحلي الذي كان موجودًا في pip.conf
أنه extra-index-url
. إذا قمت بإزالة ذلك من pip.conf
، فكل شيء يعمل بشكل صحيح ... عفوًا.
حسنًا ، يبدو أن النقطة يجب أن تتعامل مع ذلك. هل هناك شيء مميز بخصوص ذاكرة التخزين المؤقت و pip.conf
؟ أنا لست على دراية بهذه الأشياء. njsmith أي أفكار؟
أتساءل عما إذا كان خادم devpi لا يقوم بإعادة توجيه المعلومات حول الإصدارات المتاحة لحزمة معينة بشكل صحيح.
تم العثور على سبب واحد وهو أن pip
يمكنه محاولة تثبيت 1.17.0 لـ Python 2.7. يحدث هذا عندما تستخدم الحزمة setup_requires='numpy'
. هذا لأن ذلك سيستدعي easy_install
ما لم يكن لهذه الحزمة pyproject.toml
(راجع https://github.com/pypa/pip/issues/6945#issuecomment-526479930).
هناك حل بديل: نفذ صراحة pip install numpy
قبل pip install package-with-setup-requires
.
والإصلاح هو: يجب أن تضيف هذه الحزمة pyproject.toml
، مما يجعل هذه المشكلة تختفي لإصدار جديد من تلك الحزمة.
تم العثور على سبب واحد وهو أن
pip
يمكنه محاولة تثبيت 1.17.0 لـ Python 2.7. يحدث هذا عندما تستخدم الحزمةsetup_requires='numpy'
. هذا لأن ذلك سيستدعيeasy_install
إلا إذا كانت الحزمة تحتوي علىpyproject.toml
(انظر pypa / pip # 6945 (تعليق) ).هناك حل بديل: نفذ صراحة
pip install numpy
قبلpip install package-with-setup-requires
.
حالة ملموسة لكونك pip install pycuda
، والتي تفشل كما يلي:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-LYaxup/pycuda/setup.py", line 251, in <module>
main()
...
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _execfile
code = compile(script, filename, 'exec')
File "/tmp/easy_install-mp9NYd/numpy-1.19.0rc1/setup.py", line 182
raise ValueError(f'Submodule {p} missing')
^
SyntaxError: invalid syntax
الحل بسيط ، كما لاحظ rgommers : أولاً قم بتنفيذ pip install numpy==1.16.6
(لإصدار NumPy الأخير المتوافق مع Python) ثم أعد المحاولة pip install pycuda
.
هذا خطأ pip
، وخطير للغاية يبدو. يمكنني إعادة إنتاج ذلك باستخدام النقطة 20.1.1. pip-2.7 install numpy
بتثبيت 1.16.6
pip-2.7 install numpy
بشكل صحيح ، لذا فإن البيانات الوصفية لـ numpy على PyPI صحيحة. يحاول pip-2.7 install pycuda
تثبيت أحدث numpy بدلاً من 1.16.6
.
من المحتمل أن يكون قد تم الإبلاغ عن ذلك بالفعل ، ليس لدي وقت للنظر في الأمر في الأيام القادمة. artob إذا كنت تبحث عما إذا كانت هناك مشكلة في Pip لهذا وفتحت واحدة بخلاف ذلك ،
التعليق الأكثر فائدة
هناك الكثير من الأسباب الوجيهة للاستمرار في تشغيل الإصدار 2.7 ، من فضلك لا تبدأ هذا النقاش هنا.