Numpy: 从 numpy 导入错误

创建于 2016-12-24  ·  4评论  ·  资料来源: numpy/numpy

你好,
当我写:"from numpy import *" from code并执行代码时,遇到如下错误:

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行,在
从 .mtrand 导入 *
导入错误:/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.04 x86_64

蟒蛇版本:3.5.2

numpy版本:1.11.2并尝试版本:1.9.0 ,但安装失败。

请帮我找出原因,非常感谢。

最有用的评论

对我来说似乎是一个错误报告?

关于这里发生了什么的一些线索:

CPython 有一些可选代码用于捕获 SIGFPE 并将其转换为异常。 要使用它,您需要将 C 级浮点计算包装在PyFPE_START_PROTECT / PyFPE_END_PROTECT 。 如果 CPython 是用--with-fpectl编译的(对应于#define WANT_SIGFPE_HANDLER中有一个pyconfig.h ),则PyFPE_jbuf被导出为全局符号,并且这些宏展开进入一些引用这个符号的聪明的东西。 如果 CPython 是在没有--with-fpectl情况下编译的,则不会导出符号并且宏变为无操作。 所以这意味着 CPython 实际上有一个不同的、不兼容的 ABI,这取决于它是用还是不用--with-fpectl编译的。 喜悦。

(看起来您可以通过执行import fpectl来检查您拥有哪种类型的 CPython——如果这成功了,那么您就有了一个--with-fpectl CPython。)

Numpy 本身不使用这些宏。 但是 Cython 自动生成的代码确实使用了它们。

结论:如果您使用用--with-fpectl构建的 CPython 编译 Cython 模块,那么当您尝试在没有--with-fpectl构建的 CPython 上运行它时,它会崩溃。

快速检查一些常见的 linux CPython 构建以查看哪些使用--with-fpectl

  • 许多Linux:没有
  • 当前的 Debian 测试:是
  • Ubuntu 12.04:是的
  • Ubuntu 16.04:是的
  • Conda:(已检查 2.7 和 3.5)
  • Fedora 25:没有

@kevinzhai80 :出于某种原因,您是否出于某种原因使用安装了 Ubuntu 的 Python 从源代码构建了 numpy,然后尝试从安装了 conda 的 Python 中导入它?

所有4条评论

你从哪里变得麻木了? 顺便说一句,像这样的问题应该在邮件列表上问,github问题是针对错误的

对我来说似乎是一个错误报告?

关于这里发生了什么的一些线索:

CPython 有一些可选代码用于捕获 SIGFPE 并将其转换为异常。 要使用它,您需要将 C 级浮点计算包装在PyFPE_START_PROTECT / PyFPE_END_PROTECT 。 如果 CPython 是用--with-fpectl编译的(对应于#define WANT_SIGFPE_HANDLER中有一个pyconfig.h ),则PyFPE_jbuf被导出为全局符号,并且这些宏展开进入一些引用这个符号的聪明的东西。 如果 CPython 是在没有--with-fpectl情况下编译的,则不会导出符号并且宏变为无操作。 所以这意味着 CPython 实际上有一个不同的、不兼容的 ABI,这取决于它是用还是不用--with-fpectl编译的。 喜悦。

(看起来您可以通过执行import fpectl来检查您拥有哪种类型的 CPython——如果这成功了,那么您就有了一个--with-fpectl CPython。)

Numpy 本身不使用这些宏。 但是 Cython 自动生成的代码确实使用了它们。

结论:如果您使用用--with-fpectl构建的 CPython 编译 Cython 模块,那么当您尝试在没有--with-fpectl构建的 CPython 上运行它时,它会崩溃。

快速检查一些常见的 linux CPython 构建以查看哪些使用--with-fpectl

  • 许多Linux:没有
  • 当前的 Debian 测试:是
  • Ubuntu 12.04:是的
  • Ubuntu 16.04:是的
  • Conda:(已检查 2.7 和 3.5)
  • Fedora 25:没有

@kevinzhai80 :出于某种原因,您是否出于某种原因使用安装了 Ubuntu 的 Python 从源代码构建了 numpy,然后尝试从安装了 conda 的 Python 中导入它?

嗨,史密斯,
感谢您的信息,此问题已解决。

谢谢njsmith。 另外:Ubuntu 17.10 Artful没有. 升级导致错误:
$蟒蛇
Python 2.7.14(默认,2017 年 9 月 23 日,22:06:14)
[GCC 7.2.0] 在 linux2 上
输入“帮助”、“版权”、“信用”或“许可证”以获取更多信息。

导入 fpectl
回溯(最近一次调用最后一次):
文件 ”",第 1 行,在
导入错误:没有名为 fpectl 的模块

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ghost picture ghost  ·  49评论

numpy-gitbot picture numpy-gitbot  ·  49评论

khinsen picture khinsen  ·  88评论

gasparka picture gasparka  ·  78评论

mrava87 picture mrava87  ·  53评论