Hai,
Ketika saya menulis:"from numpy import *" from code dan mengeksekusi kode, maka temui kesalahan berikut:
Traceback (most recent call last):
File "rgbtoyuv.py", baris 2, di
impor numpy sebagai np
File "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/__init__.py", baris 163, di
dari . impor acak
File "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/__init__.py", baris 99, di
dari .mtrand impor *
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 : simbol tidak terdefinisi: PyFPE_jbuf
Platform ubuntu16.04 x86_64
versi python: 3.5.2
versi numpy versi:1.9.0 juga, tetapi gagal diinstal.
Tolong bantu saya menemukan alasannya, terima kasih banyak.
Di mana Anda mendapatkan numpy? BTW, pertanyaan seperti ini harus ditanyakan di milis, masalah github adalah untuk bug
Sepertinya laporan bug bagi saya?
Beberapa petunjuk tentang apa yang terjadi di sini:
CPython memiliki beberapa kode opsional untuk menangkap SIGFPE dan mengubahnya menjadi pengecualian. Untuk menggunakannya, Anda membungkus perhitungan floating point tingkat-C dalam PyFPE_START_PROTECT
/ PyFPE_END_PROTECT
. Jika CPython dikompilasi dengan --with-fpectl
(yang sesuai dengan memiliki #define WANT_SIGFPE_HANDLER
di pyconfig.h
), maka PyFPE_jbuf
diekspor sebagai simbol global, dan makro ini berkembang menjadi beberapa hal pintar yang merujuk pada simbol ini. Jika CPython dikompilasi tanpa --with-fpectl
, maka simbol tidak diekspor dan makro menjadi tanpa operasi. Jadi ini berarti bahwa CPython sebenarnya memiliki ABI yang berbeda dan tidak kompatibel tergantung pada apakah itu dikompilasi dengan atau tanpa --with-fpectl
. Sukacita.
(Sepertinya Anda dapat memeriksa jenis CPython yang Anda miliki dengan melakukan import fpectl
-- jika ini berhasil maka Anda memiliki CPython --with-fpectl
.)
Numpy sendiri tidak menggunakan makro ini. Tapi kode autogenerated Cython menggunakannya.
Kesimpulan: jika Anda mengkompilasi modul Cython menggunakan CPython yang dibuat dengan --with-fpectl
, maka modul tersebut akan macet saat Anda mencoba menjalankannya di CPython yang dibuat tanpa --with-fpectl
.
Pemeriksaan cepat beberapa build CPython linux umum untuk melihat mana yang menggunakan --with-fpectl
:
@kevinzhai80 : Apakah Anda kebetulan membuat numpy dari sumber untuk beberapa alasan, menggunakan Python yang diinstal Ubuntu, dan kemudian mencoba mengimpornya dari Python yang diinstal conda?
Hai njsmith,
Terima kasih atas informasi Anda, masalah ini teratasi.
Terima kasih njsmith. Juga: Ubuntu 17.10 Artful no . Peningkatan menyebabkan kesalahan:
$ python
Python 2.7.14 (default, 23 Sep 2017, 22:06:14)
[GCC 7.2.0] di linux2
Ketik "bantuan", "hak cipta", "kredit" atau "lisensi" untuk informasi lebih lanjut.
impor ffectl
Traceback (panggilan terakhir terakhir):
berkas "", baris 1, di
ImportError: Tidak ada modul bernama fpectl
Komentar yang paling membantu
Sepertinya laporan bug bagi saya?
Beberapa petunjuk tentang apa yang terjadi di sini:
CPython memiliki beberapa kode opsional untuk menangkap SIGFPE dan mengubahnya menjadi pengecualian. Untuk menggunakannya, Anda membungkus perhitungan floating point tingkat-C dalam
PyFPE_START_PROTECT
/PyFPE_END_PROTECT
. Jika CPython dikompilasi dengan--with-fpectl
(yang sesuai dengan memiliki#define WANT_SIGFPE_HANDLER
dipyconfig.h
), makaPyFPE_jbuf
diekspor sebagai simbol global, dan makro ini berkembang menjadi beberapa hal pintar yang merujuk pada simbol ini. Jika CPython dikompilasi tanpa--with-fpectl
, maka simbol tidak diekspor dan makro menjadi tanpa operasi. Jadi ini berarti bahwa CPython sebenarnya memiliki ABI yang berbeda dan tidak kompatibel tergantung pada apakah itu dikompilasi dengan atau tanpa--with-fpectl
. Sukacita.(Sepertinya Anda dapat memeriksa jenis CPython yang Anda miliki dengan melakukan
import fpectl
-- jika ini berhasil maka Anda memiliki CPython--with-fpectl
.)Numpy sendiri tidak menggunakan makro ini. Tapi kode autogenerated Cython menggunakannya.
Kesimpulan: jika Anda mengkompilasi modul Cython menggunakan CPython yang dibuat dengan
--with-fpectl
, maka modul tersebut akan macet saat Anda mencoba menjalankannya di CPython yang dibuat tanpa--with-fpectl
.Pemeriksaan cepat beberapa build CPython linux umum untuk melihat mana yang menggunakan
--with-fpectl
:@kevinzhai80 : Apakah Anda kebetulan membuat numpy dari sumber untuk beberapa alasan, menggunakan Python yang diinstal Ubuntu, dan kemudian mencoba mengimpornya dari Python yang diinstal conda?