やあ、
コードから「fromnumpyimport *」と記述してコードを実行すると、次のエラーが発生します。
Traceback (most recent call last):
ファイル "rgbtoyuv.py"、2行目、
numpyをnpとしてインポートします
ファイル "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/__init__.py"、行163、
から 。 ランダムにインポート
ファイル "/usr/local/lib/python3.5/site-packages/numpy-1.11.2-py3.5-linux-x86_64.egg/numpy/random/__init__.py"、99行目
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 :未定義のシンボル:PyFPE_jbuf
プラットフォームubuntu16.04x86_64
Pythonバージョン:3.5.2
numpy version:1.11.2そしてversion:1.9.0も試してみてください、しかしインストールは失敗しました。
理由を見つけるのを手伝ってください、どうもありがとう。
どこでゴツゴツしたの? ところで、このような質問はメーリングリストで行う必要があります。githubの問題はバグに関するものです。
私にはバグレポートのように見えますか?
ここで何が起こっているかについてのいくつかの手がかり:
CPythonには、SIGFPEをキャッチして例外に変換するためのオプションのコードがいくつかあります。 これを使用するには、経営幹部レベルの浮動小数点計算をPyFPE_START_PROTECT
/ PyFPE_END_PROTECT
ラップします。 CPythonが--with-fpectl
( pyconfig.h
#define WANT_SIGFPE_HANDLER
があることに対応)でコンパイルされた場合、 PyFPE_jbuf
はグローバルシンボルとしてエクスポートされ、これらのマクロは展開されますこのシンボルを参照するいくつかの巧妙なものに。 CPythonが--with-fpectl
なしでコンパイルされた場合、シンボルはエクスポートされず、マクロはノーオペレーションになります。 つまり、CPythonには、 --with-fpectl
コンパイルしたかどうかに応じて、実際には異なる互換性のないABIがあります。 喜び。
( import fpectl
実行することで、使用しているCPythonの種類を確認できるようです。これが成功すると、 --with-fpectl
CPythonが作成されます。)
Numpy自体はこれらのマクロを使用しません。 しかし、Cythonの自動生成されたコードはそれらを使用します。
結論: --with-fpectl
でビルドされたCPythonを使用してCythonモジュールをコンパイルすると、 --with-fpectl
なしでビルドされたCPythonで実行しようとするとクラッシュします。
いくつかの一般的なLinuxCPythonビルドをすばやくチェックして、どのビルドが--with-fpectl
使用しているかを確認します。
@ kevinzhai80 :UbuntuがインストールされたPythonを使用して、何らかの理由でソースからnumpyをビルドし、それをcondaがインストールされたPythonからインポートしようとしましたか?
こんにちはnjsmith、
情報をありがとう、この問題は解決されました。
njsmithに感謝します。 また:Ubuntuの17.10巧みなし。 アップグレードするとエラーが発生しました:
$ python
Python 2.7.14(デフォルト、2017年9月23日、22:06:14)
linux2の[GCC7.2.0]
詳細については、「help」、「copyright」、「credits」、または「license」と入力してください。
fpectlをインポートします
トレースバック(最後の最後の呼び出し):
ファイル ""、1行目、
ImportError:fpectlという名前のモジュールがありません
最も参考になるコメント
私にはバグレポートのように見えますか?
ここで何が起こっているかについてのいくつかの手がかり:
CPythonには、SIGFPEをキャッチして例外に変換するためのオプションのコードがいくつかあります。 これを使用するには、経営幹部レベルの浮動小数点計算を
PyFPE_START_PROTECT
/PyFPE_END_PROTECT
ラップします。 CPythonが--with-fpectl
(pyconfig.h
#define WANT_SIGFPE_HANDLER
があることに対応)でコンパイルされた場合、PyFPE_jbuf
はグローバルシンボルとしてエクスポートされ、これらのマクロは展開されますこのシンボルを参照するいくつかの巧妙なものに。 CPythonが--with-fpectl
なしでコンパイルされた場合、シンボルはエクスポートされず、マクロはノーオペレーションになります。 つまり、CPythonには、--with-fpectl
コンパイルしたかどうかに応じて、実際には異なる互換性のないABIがあります。 喜び。(
import fpectl
実行することで、使用しているCPythonの種類を確認できるようです。これが成功すると、--with-fpectl
CPythonが作成されます。)Numpy自体はこれらのマクロを使用しません。 しかし、Cythonの自動生成されたコードはそれらを使用します。
結論:
--with-fpectl
でビルドされたCPythonを使用してCythonモジュールをコンパイルすると、--with-fpectl
なしでビルドされたCPythonで実行しようとするとクラッシュします。いくつかの一般的なLinuxCPythonビルドをすばやくチェックして、どのビルドが
--with-fpectl
使用しているかを確認します。@ kevinzhai80 :UbuntuがインストールされたPythonを使用して、何らかの理由でソースからnumpyをビルドし、それをcondaがインストールされたPythonからインポートしようとしましたか?