Numpy: Importfehler von numpy

Erstellt am 24. Dez. 2016  ·  4Kommentare  ·  Quelle: numpy/numpy

Hi,
Wenn ich schreibe: "from numpy import *" aus dem Code und den Code ausführe, tritt der folgende Fehler auf:

Traceback (most recent call last):

Datei "rgbtoyuv.py", Zeile 2, in
importiere numpy als np
Datei "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/__init__.py", Zeile 163, in
von . zufällig importieren
Datei "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/__init__.py", Zeile 99, in
aus .mtrand-Import *
ImportError: /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 : undefiniertes Symbol: PyFPE_jbuf

Plattform ubuntu16.04 x86_64

Python-Version: 3.5.2

numpy version:1.11.2 und versuchen Sie auch,

Bitte helfen Sie mir, den Grund zu finden, vielen Dank.

Hilfreichster Kommentar

Scheint mir ein Fehlerbericht zu sein?

Einige Hinweise, was hier vor sich geht:

CPython verfügt über einen optionalen Code zum Abfangen von SIGFPE und zum Konvertieren in eine Ausnahme. Um es zu verwenden, packen Sie Gleitkommaberechnungen auf C-Ebene in PyFPE_START_PROTECT / PyFPE_END_PROTECT . Wenn CPython mit --with-fpectl kompiliert wurde (was einem #define WANT_SIGFPE_HANDLER in pyconfig.h ), dann wird PyFPE_jbuf als globales Symbol exportiert und diese Makros werden erweitert in einige clevere Dinge, die auf dieses Symbol verweisen. Wenn CPython ohne --with-fpectl kompiliert wurde, wird das Symbol nicht exportiert und die Makros werden zu No-Ops. Das bedeutet also, dass CPython tatsächlich eine andere, inkompatible ABI hat, je nachdem, ob es mit oder ohne --with-fpectl kompiliert wurde. Freude.

(Es sieht so aus, als ob Sie überprüfen können, welche Art von CPython Sie haben, indem Sie import fpectl --with-fpectl ausführen. Wenn dies gelingt, haben Sie ein

Numpy selbst verwendet diese Makros nicht. Aber der automatisch generierte Code von Cython verwendet sie.

Fazit: Wenn Sie ein Cython-Modul mit einem CPython kompilieren, das mit --with-fpectl , stürzt es ab, wenn Sie versuchen, es auf einem CPython auszuführen, das ohne --with-fpectl .

Schnelle Überprüfung einiger gängiger Linux-CPython-Builds, um zu sehen, welche --with-fpectl :

  • Manylinux: nein
  • Aktueller Debian-Test: ja
  • Ubuntu 12.04: ja
  • Ubuntu 16.04: ja
  • Conda: nein (geprüft 2.7 und 3.5)
  • Fedora 25: nein

@kevinzhai80 : Haben Sie aus irgendeinem Grund Numpy aus dem Quellcode erstellt, indem Sie das von Ubuntu installierte Python verwendet haben, und dann versucht, es aus einem in Conda installierten Python zu importieren?

Alle 4 Kommentare

Wo bist du taub geworden? Übrigens, Fragen wie diese sollten in der Mailingliste gestellt werden, Github-Probleme sind für Fehler

Scheint mir ein Fehlerbericht zu sein?

Einige Hinweise, was hier vor sich geht:

CPython verfügt über einen optionalen Code zum Abfangen von SIGFPE und zum Konvertieren in eine Ausnahme. Um es zu verwenden, packen Sie Gleitkommaberechnungen auf C-Ebene in PyFPE_START_PROTECT / PyFPE_END_PROTECT . Wenn CPython mit --with-fpectl kompiliert wurde (was einem #define WANT_SIGFPE_HANDLER in pyconfig.h ), dann wird PyFPE_jbuf als globales Symbol exportiert und diese Makros werden erweitert in einige clevere Dinge, die auf dieses Symbol verweisen. Wenn CPython ohne --with-fpectl kompiliert wurde, wird das Symbol nicht exportiert und die Makros werden zu No-Ops. Das bedeutet also, dass CPython tatsächlich eine andere, inkompatible ABI hat, je nachdem, ob es mit oder ohne --with-fpectl kompiliert wurde. Freude.

(Es sieht so aus, als ob Sie überprüfen können, welche Art von CPython Sie haben, indem Sie import fpectl --with-fpectl ausführen. Wenn dies gelingt, haben Sie ein

Numpy selbst verwendet diese Makros nicht. Aber der automatisch generierte Code von Cython verwendet sie.

Fazit: Wenn Sie ein Cython-Modul mit einem CPython kompilieren, das mit --with-fpectl , stürzt es ab, wenn Sie versuchen, es auf einem CPython auszuführen, das ohne --with-fpectl .

Schnelle Überprüfung einiger gängiger Linux-CPython-Builds, um zu sehen, welche --with-fpectl :

  • Manylinux: nein
  • Aktueller Debian-Test: ja
  • Ubuntu 12.04: ja
  • Ubuntu 16.04: ja
  • Conda: nein (geprüft 2.7 und 3.5)
  • Fedora 25: nein

@kevinzhai80 : Haben Sie aus irgendeinem Grund Numpy aus dem Quellcode erstellt, indem Sie das von Ubuntu installierte Python verwendet haben, und dann versucht, es aus einem in Conda installierten Python zu importieren?

Hallo njsmith,
Vielen Dank für Ihre Informationen, dieses Problem ist gelöst.

Danke njsmith. Außerdem: Ubuntu 17.10 Artful Nr . . Das Upgrade hat den Fehler verursacht:
$python
Python 2.7.14 (Standard, 23. September 2017, 22:06:14)
[GCC 7.2.0] unter Linux2
Geben Sie "Hilfe", "Copyright", "Credits" oder "Lizenz" ein, um weitere Informationen zu erhalten.

fpektl importieren
Traceback (letzter Anruf zuletzt):
Datei "", Zeile 1, in
ImportError: Kein Modul namens fpectl

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen