Numpy: تثبيت نقطة على python 2.7 في محاولة لتثبيت numpy 1.17 ، على عكس NEP 14

تم إنشاؤها على ١٦ أغسطس ٢٠١٩  ·  15تعليقات  ·  مصدر: numpy/numpy

يحاول pip install numpy on python 2.7 تثبيت 1.17 numpy ، مما أسقط دعم python 2.7. هذا يتعارض مع الوظيفة الموضحة في NEP 14 ، والتي تنص على:

... سيستمر pip install numpy في Python 2 في تقديم آخر إصدار عملي إلى الأبد ...

معلومات إصدار Numpy / Python:

إصدار النقطة: 19.2.2
الثعبان: 2.7.15 | Anaconda، Inc. | (افتراضي ، 23 أكتوبر 2018 ، 18:31:10) n [GCC 7.3.0]

32 - Installation

التعليق الأكثر فائدة

السؤال الحقيقي هو لماذا تستخدم Python 2.7

هناك الكثير من الأسباب الوجيهة للاستمرار في تشغيل الإصدار 2.7 ، من فضلك لا تبدأ هذا النقاش هنا.

ال 15 كومينتر

يبدو أن هناك خطأ في النقطة أو 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 لهذا وفتحت واحدة بخلاف ذلك ،

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

dmvianna picture dmvianna  ·  4تعليقات

marcocaccin picture marcocaccin  ·  4تعليقات

toddrjen picture toddrjen  ·  4تعليقات

astrofrog picture astrofrog  ·  4تعليقات

keithbriggs picture keithbriggs  ·  3تعليقات