在Ubuntu上安装python igraph时出错(从命令行)

在Ubuntu上安装python igraph时出错(从命令行),python,linux,ubuntu,igraph,Python,Linux,Ubuntu,Igraph,我正在尝试从命令行安装python igraph。我在AWS服务器上创建了一个新的Ubuntu实例,所以我必须从命令行执行所有操作。以下是我在新安装的Ubuntu中所做的工作: $sudo apt-get update $sudo apt-get install build-essential $sudo apt-get install python-dev $sudo apt-get update $sudo apt-get install python-pip $sudo apt-get u

我正在尝试从命令行安装python igraph。我在AWS服务器上创建了一个新的Ubuntu实例,所以我必须从命令行执行所有操作。以下是我在新安装的Ubuntu中所做的工作:

$sudo apt-get update
$sudo apt-get install build-essential
$sudo apt-get install python-dev
$sudo apt-get update
$sudo apt-get install python-pip
$sudo apt-get update
$sudo pip install python-igraph
我得到以下错误:

Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_root/python-igraph/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-XxxMbQ-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_root/python-igraph
Traceback (most recent call last):
 File "/usr/bin/pip", line 9, in <module>
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
 File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 235, in main
return command.main(cmd_args)
 File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 161, in main
text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 32: ordinal not in range(128)
Command/usr/bin/python-c“导入setuptools,tokenize;_文件_=”/tmp/pip_build\u root/python igraph/setup.py';exec(compile(getattr(tokenize,'open',open)(__u文件__;).read().replace('\r\n','\n','exec'))安装--record/tmp/pip XxxMbQ record/install-record.txt--外部管理的单一版本--编译失败,在/tmp/pip\u build\u root/python igraph中出现错误代码1
回溯(最近一次呼叫最后一次):
文件“/usr/bin/pip”,第9行,在
加载入口点('pip==1.5.4','console脚本','pip')()
文件“/usr/lib/python2.7/dist-packages/pip/_-init__.py”,主目录第235行
return command.main(cmd_args)
文件“/usr/lib/python2.7/dist packages/pip/basecommand.py”,第161行,在main中
text='\n'.连接(完成日志)
UnicodeDecodeError:“ascii”编解码器无法解码位置32中的字节0xe2:序号不在范围内(128)

要在Ubuntu上安装pyhton igraph,请尝试以下步骤:

  • sudo添加apt存储库ppa:igraph/ppa
  • sudoapt获得更新
  • sudo-apt-get-install-python-igraph

  • p、 s 12.04版本没有可用的python igraph软件包。

    这似乎至少部分来自于
    pip
    -在
    pip安装python igraph期间出错,引发异常,
    pip
    捕获异常并尝试将输出保存到其日志文件中。不幸的是,输出中的非ASCII字符会阻止
    pip
    写入日志文件,这是您看到的最后一个异常(不是错误的实际原因)。在大多数情况下,非ASCII字符来自主目录或工作目录的名称,因此首先确保它们中没有任何非ASCII字符。如果这不起作用,则必须通过在Python路径的某个位置创建名为
    sitecustomize.py的文件并添加以下代码,将Python的默认编码设置为
    utf-8

    import sys
    sys.setdefaultencoding('utf-8')
    

    这将告诉Python使用UTF-8编码而不是ASCII编码IO操作-希望这将使
    pip
    完成日志记录阶段,然后您可以查看实际输出。调试完成后,别忘了删除
    sitecustomize.py

    我在Ubuntu 14.04上,在virtualenv中使用了它。只为PythoniGraph安装Ubuntu包并不简单,因为我的virtualenv不包括站点包IIRC

    多亏@Tamás的帮助和鼓励,当我收到奇怪的
    UnicodeDecodeError
    时,我又挖掘了一点。看来真正的错误是

    /usr/bin/ld: cannot find -lxml2
    
    但它发生在大约13000行构建输出之后,在这些输出中,似乎已经成功地大量使用了-lxml2。奇怪

    但是根据当时的一些建议

    我安装了一些库:

    sudo aptitude install build-essential libxml2-dev libglpk-dev libgmp3-dev libblas-dev liblapack-dev libarpack2-dev python-dev
    
    有人告诉我:

    将安装以下新软件包: libarpack2开发libbtf1.2.0{a}libcsparse3.1.2{a}libcxsparse3.1.2{a}libglpk开发libgmp开发{a}libgmp3开发libgmpx4ldbl{a}libklu1.2.1{a}libldl2.1.0{a}libspqr1.3.1{a}libsuitesparse开发{a}libxml2开发

    之后,
    pip安装pythonigraph
    成功。我在这两种情况下都保留了整个输出,以防有人可以使用它来解决打包问题,并帮助使其更加健壮

    额外提示:接下来,我不知道如何获取python cairo绑定,因为igraph文档没有提到cairo绑定的Linux安装,而我自己也遇到了这个错误,这让我自己陷入了一场令人沮丧且失败的追逐:

    Could not find any downloads that satisfy the requirement pycairo
    Some externally hosted files were ignored (use --allow-external pycairo to allow).
    
    解决方案是使用最新的一组绑定:

    pip install cairocffi
    

    尝试其他选项。手动安装我一直在使用pip在Ubuntu 12.04上进行igraph安装。刚刚尝试了
    apt-get-install-python-igraph
    ,安装没有问题。不太清楚pip为什么会失败。其他人可以插话。嘿@Tamás,使用
    pip
    apt get
    安装igraph有什么区别?查看我对上述答案的评论,我能够让
    apt get
    工作,但使用
    pip
    失败。让我知道,谢谢
    apt get install
    只需下载预编译的igraph库并将其复制到系统上的适当位置即可
    pip安装
    下载源代码并尝试从头开始编译,尽管我尽可能使其自动化。如果您有时间,请将
    pip install python igraph
    的输出发布到某个地方,以便我可以查看它并找出您机器上的错误。感谢@Tamás查看我的答案以了解更多详细信息。哦,非常感谢@Nealmcb,我认为这不是一个简单的调试!