Numpy: importar erro de numpy

Criado em 24 dez. 2016  ·  4Comentários  ·  Fonte: numpy/numpy

Oi,
Quando escrevo: "from numpy import *" do código e executo o código, encontro o seguinte erro:

Traceback (most recent call last):

Arquivo "rgbtoyuv.py", linha 2, em
importar numpy como np
Arquivo "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/__init__.py", linha 163, em
a partir de . importar aleatório
Arquivo "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/__init__.py", linha 99, em
from .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 : símbolo indefinido: PyFPE_jbuf

Plataforma ubuntu16.04 x86_64

versão python: 3.5.2

versão numpy versão: 1.9.0 também, mas a instalação falhou.

Por favor me ajude a encontrar o motivo, muito obrigado.

Comentários muito úteis

Parece um relatório de bug para mim?

Algumas pistas sobre o que está acontecendo aqui:

CPython possui algum código opcional para capturar SIGFPE e convertê-lo em uma exceção. Para usá-lo, você envolve cálculos de ponto flutuante de nível C em PyFPE_START_PROTECT / PyFPE_END_PROTECT . Se CPython foi compilado com --with-fpectl (que corresponde a ter #define WANT_SIGFPE_HANDLER em pyconfig.h ), então PyFPE_jbuf é exportado como um símbolo global e essas macros se expandem em algumas coisas inteligentes que fazem referência a este símbolo. Se CPython foi compilado sem --with-fpectl , então o símbolo não é exportado e as macros se tornam autônomas. Portanto, isso significa que o CPython tem, na verdade, um ABI diferente e incompatível, dependendo se foi compilado com ou sem --with-fpectl . Alegria.

(Parece que você pode verificar que tipo de CPython você tem fazendo import fpectl - se for bem-sucedido, você tem um --with-fpectl CPython.)

O Numpy em si não usa essas macros. Mas o código gerado automaticamente pelo Cython os usa.

Conclusão: se você compilar um módulo Cython usando um CPython que foi construído com --with-fpectl , ele travará quando você tentar executá-lo em um CPython que foi construído sem --with-fpectl .

Verificação rápida de algumas compilações CPython Linux comuns para ver quais usam --with-fpectl :

  • Manylinux: não
  • Teste Debian atual: sim
  • Ubuntu 12.04: sim
  • Ubuntu 16.04: sim
  • Conda: não (verificado 2.7 e 3.5)
  • Fedora 25: não

@ kevinzhai80 : Você por acaso construiu numpy a partir do código-fonte por algum motivo, usando o Python instalado no Ubuntu, e depois tentou importá-lo de um Python instalado pelo conda?

Todos 4 comentários

Onde você ficou entorpecido? A propósito, perguntas como essa devem ser feitas na lista de e-mails, questões do github são para bugs

Parece um relatório de bug para mim?

Algumas pistas sobre o que está acontecendo aqui:

CPython possui algum código opcional para capturar SIGFPE e convertê-lo em uma exceção. Para usá-lo, você envolve cálculos de ponto flutuante de nível C em PyFPE_START_PROTECT / PyFPE_END_PROTECT . Se CPython foi compilado com --with-fpectl (que corresponde a ter #define WANT_SIGFPE_HANDLER em pyconfig.h ), então PyFPE_jbuf é exportado como um símbolo global e essas macros se expandem em algumas coisas inteligentes que fazem referência a este símbolo. Se CPython foi compilado sem --with-fpectl , então o símbolo não é exportado e as macros se tornam autônomas. Portanto, isso significa que o CPython tem, na verdade, um ABI diferente e incompatível, dependendo se foi compilado com ou sem --with-fpectl . Alegria.

(Parece que você pode verificar que tipo de CPython você tem fazendo import fpectl - se for bem-sucedido, você tem um --with-fpectl CPython.)

O Numpy em si não usa essas macros. Mas o código gerado automaticamente pelo Cython os usa.

Conclusão: se você compilar um módulo Cython usando um CPython que foi construído com --with-fpectl , ele travará quando você tentar executá-lo em um CPython que foi construído sem --with-fpectl .

Verificação rápida de algumas compilações CPython Linux comuns para ver quais usam --with-fpectl :

  • Manylinux: não
  • Teste Debian atual: sim
  • Ubuntu 12.04: sim
  • Ubuntu 16.04: sim
  • Conda: não (verificado 2.7 e 3.5)
  • Fedora 25: não

@ kevinzhai80 : Você por acaso construiu numpy a partir do código-fonte por algum motivo, usando o Python instalado no Ubuntu, e depois tentou importá-lo de um Python instalado pelo conda?

Olá njsmith,
Obrigado pela sua informação, este problema foi resolvido.

Obrigado njsmith. Também: Ubuntu 17.10 Artful no . A atualização causou o erro:
$ python
Python 2.7.14 (padrão, 23 de setembro de 2017, 22:06:14)
[GCC 7.2.0] no linux2
Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.

importar fpectl
Traceback (última chamada mais recente):
Arquivo "", linha 1, em
ImportError: Nenhum módulo denominado fpectl

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

keithbriggs picture keithbriggs  ·  3Comentários

Foadsf picture Foadsf  ·  3Comentários

dcsaba89 picture dcsaba89  ·  3Comentários

Kreol64 picture Kreol64  ·  3Comentários

marcocaccin picture marcocaccin  ·  4Comentários