Numpy: erreur d'importation de numpy

Créé le 24 déc. 2016  ·  4Commentaires  ·  Source: numpy/numpy

Salut,
Lorsque j'écris : "from numpy import *" à partir du code et que j'exécute le code, l'erreur suivante s'affiche :

Traceback (most recent call last):

Fichier "rgbtoyuv.py", ligne 2, dans
importer numpy en tant que np
Fichier "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/__init__.py", ligne 163, dans
de . importer au hasard
Fichier "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/__init__.py", ligne 99, dans
à partir de l'importation .mtrand *
Erreur d'importation : /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 : symbole non défini : PyFPE_jbuf

Plateforme ubuntu16.04 x86_64

version python : 3.5.2

numpy version:1.11.2 et essayez également la version:1.9.0 , mais l'installation a échoué.

S'il vous plaît, aidez-moi à trouver la raison, merci beaucoup.

Commentaire le plus utile

Cela ressemble à un rapport de bogue pour moi?

Quelques indices sur ce qui se passe ici :

CPython a du code facultatif pour attraper SIGFPE et le convertir en une exception. Pour l'utiliser, vous enveloppez les calculs à virgule flottante de niveau C dans PyFPE_START_PROTECT / PyFPE_END_PROTECT . Si CPython a été compilé avec --with-fpectl (ce qui correspond à un #define WANT_SIGFPE_HANDLER dans pyconfig.h ), alors PyFPE_jbuf est exporté en tant que symbole global, et ces macros se développent dans des trucs intelligents qui font référence à ce symbole. Si CPython a été compilé sans --with-fpectl , le symbole n'est pas exporté et les macros deviennent no-ops. Cela signifie donc que CPython a en fait une ABI différente et incompatible selon qu'elle a été compilée avec ou sans --with-fpectl . Joie.

(Il semble que vous puissiez vérifier quel type de CPython vous avez en faisant import fpectl -- si cela réussit, vous avez un --with-fpectl CPython.)

Numpy lui-même n'utilise pas ces macros. Mais le code généré automatiquement par Cython les utilise.

Conclusion : si vous compilez un module Cython à l'aide d'un CPython construit avec --with-fpectl , il plantera lorsque vous essaierez de l'exécuter sur un CPython qui a été construit sans --with-fpectl .

Vérification rapide de certaines versions courantes de Linux CPython pour voir celles qui utilisent --with-fpectl :

  • Manylinux : non
  • Tests Debian actuels : oui
  • Ubuntu 12.04 : oui
  • Ubuntu 16.04 : oui
  • Conda : non (vérifié 2.7 et 3.5)
  • Fedora 25 : non

@kevinzhai80 : Avez-vous par hasard créé numpy à partir des sources pour une raison quelconque, en utilisant le Python installé sur Ubuntu, puis avez-vous essayé de l'importer à partir d'un Python installé sur conda ?

Tous les 4 commentaires

Où êtes-vous devenu numpy? BTW, des questions comme celle-ci devraient être posées sur la liste de diffusion, les problèmes de github sont pour les bogues

Cela ressemble à un rapport de bogue pour moi?

Quelques indices sur ce qui se passe ici :

CPython a du code facultatif pour attraper SIGFPE et le convertir en une exception. Pour l'utiliser, vous enveloppez les calculs à virgule flottante de niveau C dans PyFPE_START_PROTECT / PyFPE_END_PROTECT . Si CPython a été compilé avec --with-fpectl (ce qui correspond à un #define WANT_SIGFPE_HANDLER dans pyconfig.h ), alors PyFPE_jbuf est exporté en tant que symbole global, et ces macros se développent dans des trucs intelligents qui font référence à ce symbole. Si CPython a été compilé sans --with-fpectl , le symbole n'est pas exporté et les macros deviennent no-ops. Cela signifie donc que CPython a en fait une ABI différente et incompatible selon qu'elle a été compilée avec ou sans --with-fpectl . Joie.

(Il semble que vous puissiez vérifier quel type de CPython vous avez en faisant import fpectl -- si cela réussit, vous avez un --with-fpectl CPython.)

Numpy lui-même n'utilise pas ces macros. Mais le code généré automatiquement par Cython les utilise.

Conclusion : si vous compilez un module Cython à l'aide d'un CPython construit avec --with-fpectl , il plantera lorsque vous essaierez de l'exécuter sur un CPython qui a été construit sans --with-fpectl .

Vérification rapide de certaines versions courantes de Linux CPython pour voir celles qui utilisent --with-fpectl :

  • Manylinux : non
  • Tests Debian actuels : oui
  • Ubuntu 12.04 : oui
  • Ubuntu 16.04 : oui
  • Conda : non (vérifié 2.7 et 3.5)
  • Fedora 25 : non

@kevinzhai80 : Avez-vous par hasard créé numpy à partir des sources pour une raison quelconque, en utilisant le Python installé sur Ubuntu, puis avez-vous essayé de l'importer à partir d'un Python installé sur conda ?

Salut njsmith,
Merci pour vos informations, ce problème est résolu.

Merci njsmith. Aussi : Ubuntu 17.10 Artful no . La mise à niveau a causé l'erreur :
$ python
Python 2.7.14 (par défaut, 23 sept. 2017, 22:06:14)
[GCC 7.2.0] sur linux2
Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.

importer fpectl
Traceback (appel le plus récent en dernier) :
Déposer "", ligne 1, dans
ImportError : aucun module nommé fpectl

Cette page vous a été utile?
0 / 5 - 0 notes