Numpy: numpyからのインポートエラー

作成日 2016年12月24日  ·  4コメント  ·  ソース: numpy/numpy

やあ、
コードから「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も試してみてください、しかしインストールは失敗しました。

理由を見つけるのを手伝ってください、どうもありがとう。

最も参考になるコメント

私にはバグレポートのように見えますか?

ここで何が起こっているかについてのいくつかの手がかり:

CPythonには、SIGFPEをキャッチして例外に変換するためのオプションのコードがいくつかあります。 これを使用するには、経営幹部レベルの浮動小数点計算をPyFPE_START_PROTECT / PyFPE_END_PROTECTラップします。 CPythonが--with-fpectlpyconfig.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使用しているかを確認します。

  • Manylinux:いいえ
  • 現在のDebianテスト:はい
  • Ubuntu 12.04:はい
  • Ubuntu 16.04:はい
  • コンダ:いいえ(2.7と3.5をチェック)
  • Fedora 25:いいえ

@ kevinzhai80 :UbuntuがインストールされたPythonを使用して、何らかの理由でソースからnumpyをビルドし、それをcondaがインストールされたPythonからインポートしようとしましたか?

全てのコメント4件

どこでゴツゴツしたの? ところで、このような質問はメーリングリストで行う必要があります。githubの問題はバグに関するものです。

私にはバグレポートのように見えますか?

ここで何が起こっているかについてのいくつかの手がかり:

CPythonには、SIGFPEをキャッチして例外に変換するためのオプションのコードがいくつかあります。 これを使用するには、経営幹部レベルの浮動小数点計算をPyFPE_START_PROTECT / PyFPE_END_PROTECTラップします。 CPythonが--with-fpectlpyconfig.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使用しているかを確認します。

  • Manylinux:いいえ
  • 現在のDebianテスト:はい
  • Ubuntu 12.04:はい
  • Ubuntu 16.04:はい
  • コンダ:いいえ(2.7と3.5をチェック)
  • Fedora 25:いいえ

@ 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という名前のモジュールがありません

このページは役に立ちましたか?
0 / 5 - 0 評価