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.
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
:
@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
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
inpyconfig.h
), dann wirdPyFPE_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 einNumpy 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
:@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?