Numpy: خطأ استيراد من numpy

تم إنشاؤها على ٢٤ ديسمبر ٢٠١٦  ·  4تعليقات  ·  مصدر: numpy/numpy

أهلا،
عندما أكتب: "from numpy import *" من الكود وأنفذ الكود ، فحينها أواجه الخطأ التالي:

Traceback (most recent call last):

ملف "rgbtoyuv.py" ، السطر 2 ، بتنسيق
استيراد numpy كـ np
ملف "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/__init__.py" ، السطر 163 ، في
من عند . استيراد عشوائي
ملف "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/__init__.py" ، السطر 99 ، في
من استيراد mtrand *
خطأ الاستيراد: /usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/mtrand.cpython-35m-x86_64-linux-gnu.so : الرمز غير المحدد: PyFPE_jbuf

النظام الأساسي ubuntu16.04 x86_64

إصدار بيثون: 3.5.2

الإصدار numpy الإصدار: 1.9.0 أيضًا ، لكن التثبيت فشل.

الرجاء مساعدتي في العثور على السبب ، شكرا جزيلا.

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

يبدو وكأنه تقرير الشوائب لي؟

بعض القرائن على ما يحدث هنا:

يحتوي CPython على بعض الرموز الاختيارية للقبض على SIGFPE وتحويله إلى استثناء. لاستخدامها ، يمكنك التفاف حسابات النقطة العائمة على مستوى C في PyFPE_START_PROTECT / PyFPE_END_PROTECT . إذا تم تجميع CPython باستخدام --with-fpectl (والذي يتوافق مع وجود #define WANT_SIGFPE_HANDLER في pyconfig.h ) ، فسيتم تصدير PyFPE_jbuf كرمز عام ، ويتم توسيع وحدات الماكرو هذه في بعض الأشياء الذكية التي تشير إلى هذا الرمز. إذا تم تجميع CPython بدون --with-fpectl ، فلن يتم تصدير الرمز وتصبح وحدات الماكرو no-ops. هذا يعني أن CPython يحتوي بالفعل على ABI مختلف وغير متوافق اعتمادًا على ما إذا كان قد تم تجميعه باستخدام أو بدون --with-fpectl . مرح.

(يبدو أنه يمكنك التحقق من نوع CPython الذي لديك عن طريق القيام بـ import fpectl - إذا نجح ذلك ، فلديك --with-fpectl CPython.)

Numpy نفسها لا تستخدم وحدات الماكرو هذه. لكن الكود الذي تم إنشاؤه بواسطة Cython يستخدمها.

الخلاصة: إذا قمت بتجميع وحدة Cython باستخدام CPython الذي تم إنشاؤه باستخدام --with-fpectl ، فسوف يتعطل عند محاولة تشغيله على CPython الذي تم إنشاؤه بدون --with-fpectl .

فحص سريع لبعض إصدارات linux CPython الشائعة لمعرفة أي منها يستخدم --with-fpectl :

  • Manylinux: لا
  • اختبار دبيان الحالي: نعم
  • نظام التشغيل Ubuntu 12.04: نعم
  • أوبونتو 16.04: نعم
  • Conda: لا (فحص 2.7 و 3.5)
  • فيدورا 25: لا

@ kevinzhai80 : هل قمت ببعض المصادفة ببناء numpy من المصدر لسبب ما ، باستخدام Python المثبت على Ubuntu ، ثم حاولت استيراده من Python المثبتة على Conda؟

ال 4 كومينتر

من أين حصلت على numpy؟ راجع للشغل ، يجب طرح أسئلة مثل هذه في القائمة البريدية ، مشكلات github مخصصة للأخطاء

يبدو وكأنه تقرير الشوائب لي؟

بعض القرائن على ما يحدث هنا:

يحتوي CPython على بعض الرموز الاختيارية للقبض على SIGFPE وتحويله إلى استثناء. لاستخدامها ، يمكنك التفاف حسابات النقطة العائمة على مستوى C في PyFPE_START_PROTECT / PyFPE_END_PROTECT . إذا تم تجميع CPython باستخدام --with-fpectl (والذي يتوافق مع وجود #define WANT_SIGFPE_HANDLER في pyconfig.h ) ، فسيتم تصدير PyFPE_jbuf كرمز عام ، ويتم توسيع وحدات الماكرو هذه في بعض الأشياء الذكية التي تشير إلى هذا الرمز. إذا تم تجميع CPython بدون --with-fpectl ، فلن يتم تصدير الرمز وتصبح وحدات الماكرو no-ops. هذا يعني أن CPython يحتوي بالفعل على ABI مختلف وغير متوافق اعتمادًا على ما إذا كان قد تم تجميعه باستخدام أو بدون --with-fpectl . مرح.

(يبدو أنه يمكنك التحقق من نوع CPython الذي لديك عن طريق القيام بـ import fpectl - إذا نجح ذلك ، فلديك --with-fpectl CPython.)

Numpy نفسها لا تستخدم وحدات الماكرو هذه. لكن الكود الذي تم إنشاؤه بواسطة Cython يستخدمها.

الخلاصة: إذا قمت بتجميع وحدة Cython باستخدام CPython الذي تم إنشاؤه باستخدام --with-fpectl ، فسوف يتعطل عند محاولة تشغيله على CPython الذي تم إنشاؤه بدون --with-fpectl .

فحص سريع لبعض إصدارات linux CPython الشائعة لمعرفة أي منها يستخدم --with-fpectl :

  • Manylinux: لا
  • اختبار دبيان الحالي: نعم
  • نظام التشغيل Ubuntu 12.04: نعم
  • أوبونتو 16.04: نعم
  • Conda: لا (فحص 2.7 و 3.5)
  • فيدورا 25: لا

@ kevinzhai80 : هل قمت ببعض المصادفة ببناء numpy من المصدر لسبب ما ، باستخدام Python المثبت على Ubuntu ، ثم حاولت استيراده من Python المثبتة على Conda؟

مرحبا نجسميث ،
شكرا لمعلوماتك ، تم حل هذه المشكلة.

شكرا نجسميث. أيضًا: Ubuntu 17.10 no . الترقية تسببت في الخطأ:
$ بيثون
Python 2.7.14 (افتراضي ، 23 سبتمبر 2017 ، 22:06:14)
[GCC 7.2.0] على linux2
اكتب "مساعدة" أو "حقوق طبع ونشر" أو "ائتمانات" أو "ترخيص" لمزيد من المعلومات.

استيراد fpectl
Traceback (آخر مكالمة أخيرة):
ملف ""، السطر 1 ، في
ImportError: لا توجد وحدة باسم fpectl

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