【问题标题】:Error installing python-igraph on Ubuntu (from command line)在 Ubuntu 上安装 python-igraph 时出错(从命令行)
【发布时间】:2015-05-21 23:38:43
【问题描述】:

我正在尝试从命令行安装 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)

【问题讨论】:

标签: python linux ubuntu igraph


【解决方案1】:

我让它在虚拟环境中的 Ubuntu 14.04 上运行。只为 python-igraph 安装 Ubuntu 包并不简单,因为我的 virtualenv 不包含站点包 IIRC。

感谢@Tamás 的帮助和鼓舞人心的回答,当我得到奇怪的UnicodeDecodeError 时,我挖掘了更多信息。看来真正的错误是

/usr/bin/ld: cannot find -lxml2

但它发生在大约 13000 行构建输出之后,其中大量使用似乎已成功使用 -lxml2。奇怪。

但基于一些建议

http://igraph.wikidot.com/installing-python-igraph-on-linux#toc0

我安装了一些库:

sudo aptitude install build-essential libxml2-dev libglpk-dev libgmp3-dev libblas-dev liblapack-dev libarpack2-dev python-dev

有人告诉我:

将安装以下新软件包: libarpack2-dev libbtf1.2.0{a} libcs​​parse3.1.2{a} libcxsparse3.1.2{a} libglpk-dev libgmp-dev{a} libgmp3-dev libgmpxx4ldbl{a} libklu1.2.1{a} libldl2.1.0{a} libspqr1 .3.1{a} libsuitesparse-dev{a} libxml2-dev

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

额外提示:接下来我不知道如何获取 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

【讨论】:

  • 哦,非常感谢@Nealmcb 我认为这不是一个简单的调试!
【解决方案2】:

这似乎至少部分来自pip - 在pip install 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。

【讨论】:

  • 嘿@Tamás,使用pip 和apt-get 安装igraph 有什么区别?检查我对上述答案的评论,我能够让apt-get 工作,但对pip 不成功。告诉我,谢谢!
  • apt-get install 只是将预编译的 igraph 库下载并复制到系统上的适当位置。 pip install 下载源代码并尝试从头开始编译,尽管我试图使其尽可能自动化。如果您有时间,请将pip install python-igraph 的输出发布到某处,以便我查看它并找出您的机器出了什么问题。
  • 谢谢@Tamás 请参阅我的回答了解更多详情。
【解决方案3】:

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

  1. sudo add-apt-repository ppa:igraph/ppa
  2. sudo apt-get 更新
  3. sudo apt-get install python-igraph

p.s 12.04 版本没有可用的包 python-igraph。

【讨论】:

  • 我整天都在使用 pip 在 Ubuntu 12.04 上与 igraph 安装作斗争。刚试过apt-get install python-igraph,安装没问题。不完全确定为什么 pip 失败了。其他人可以插话。
猜你喜欢
  • 2017-05-12
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 2019-07-18
  • 2019-06-18
相关资源
最近更新 更多