为什么numpy给出了#34;分段错误"在导入和pydoc?

时间:2014-03-20 16:22:56

标签: python numpy segmentation-fault pydoc

我已按以下方式安装并调用numpy库。但为什么它会给段错误? 如何克服这个问题?

[pdubois@mymachine Tools]$ pip install numpy 
Requirement already satisfied (use --upgrade to upgrade): numpy in /misc/u21/pdubois/.python2.7.6/lib/python2.7/site-packages/numpy-1.9.0.dev_688b243-py2.7-linux-x86_64.egg
Cleaning up..

还有easy_install

[pdubois@mymachine ~]$ easy_install-2.7.6 numpy 
Searching for numpy
Best match: numpy 1.9.0.dev-688b243
Processing numpy-1.9.0.dev_688b243-py2.7-linux-x86_64.egg
numpy 1.9.0.dev-688b243 is already the active version in easy-install.pth
Installing f2py script to /u21/pdubois/.python2.7.6/bin

Using /misc/u21/pdubois/.python2.7.6/lib/python2.7/site-packages/numpy-1.9.0.dev_688b243-py2.7-linux-x86_64.egg
Processing dependencies for numpy
Finished processing dependencies for numpy

它给了我这个错误:

[pdubois@mymachine Tools]$ python 
Python 2.7.6 (default, Feb  4 2014, 10:19:53) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy 
Segmentation fault

同样当我使用pydoc调用它时:

[pdubois@mymachine Tools]$ pydoc numpy 
Segmentation fault

4 个答案:

答案 0 :(得分:3)

我建议您尝试使用virtualenv和环境中的安装numpy设置python虚拟环境,并查看问题是否已复制。

在针对系统的默认python安装安装时出现了numpy破坏的问题。 有关此here的讨论。您可以参考它来进一步了解问题。

numpy依赖库也会导致问题。 讨论中的某些人指出ATLAS库可能存在问题,并且在没有ATLAS的情况下安装numpy会解决它。

答案 1 :(得分:1)

在文件pydoc.py中,您必须更改默认功能:

def pipepager(text, cmd):
    """Page through text by feeding it to another program."""
    pipe = os.popen(cmd, 'w')
    try:
        pipe.write(text)
        pipe.close()
    except IOError:
        pass # Ignore broken pipes caused by quitting the pager program.

要:

def pipepager(text, cmd):
    """Page through text by feeding it to another program."""
    import subprocess
    pipe = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True).stdin
    try:
        pipe.write(text)
        pipe.close()
    except IOError:
        pass # Ignore broken pipes caused by quitting the pager program.

当您更改os.popen()

时,问题显然会消失

查看here了解更多信息。

答案 2 :(得分:1)

您是否尝试安装1.8而不是1.9? 1.9仍然是测试版。通常使用numpy 1.8它应该可以工作

答案 3 :(得分:0)

当我导入由GCC 4.1.2编译的numpy 1.9.0时,我遇到了同样的问题。它通过使用GCC 4.4.7解决。