你好,
当我写:"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 ,但安装失败。
请帮我找出原因,非常感谢。
你从哪里变得麻木了? 顺便说一句,像这样的问题应该在邮件列表上问,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
:
@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 的模块
最有用的评论
对我来说似乎是一个错误报告?
关于这里发生了什么的一些线索:
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
:@kevinzhai80 :出于某种原因,您是否出于某种原因使用安装了 Ubuntu 的 Python 从源代码构建了 numpy,然后尝试从安装了 conda 的 Python 中导入它?