尽管已经适当安装了libcairo2-dev
和pip安装了cairocffi
,但我无法在Google Colab中使用python-igraph绘制任何内容。
我想在Colab的项目中使用igraph
,专门用于绘制图形和节点社区。安装步骤顺利进行,没有错误。但是当我尝试绘制一个简单的图形时,我从igraph/drawing/__init__.py
中收到关于utf-8编码的错误。将pycairo
换成cairocffi
后,我得到了同样的错误。
!sudo apt install build-essential python-dev libxml2 libxml2-dev zlib1g-dev libcairo2-dev
!pip install cairocffi python-igraph
import igraph as ig
g = ig.Graph(edges=[(0,1)])
ig.plot(g)
没有情节出现,我得到:
AttributeError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/IPython/core/formatters.py in __call__(self, obj)
336 method = get_real_method(obj, self.print_method)
337 if method is not None:
--> 338 return method()
339 return None
340 else:
/usr/local/lib/python3.6/dist-packages/igraph/drawing/__init__.py in _repr_svg_(self)
352 surface.finish()
353 # Return the raw SVG representation
--> 354 return io.getvalue().encode("utf-8")
355
356 @property
AttributeError: 'bytes' object has no attribute 'encode'
<igraph.drawing.Plot at 0x7f6b34afb160>
答案 0 :(得分:2)
显然,这是一个已知的错误,但是由于某些原因尚未修复,请参见GtiHub issue tracker
您将需要手动编辑文件,并将故障行替换为(例如)
result = io.getvalue()
return result.decode("utf-8")
答案 1 :(得分:1)
按照@Silmathoron的解释,我换了
!pip install cairocffi python-igraph
在我最初的问题中
!pip install cairocffi
!pip download python-igraph
!tar -xf python-igraph-0.7.1.post6.tar.gz
with open("python-igraph-0.7.1.post6/igraph/drawing/__init__.py", 'r') as file:
text = file.read()
assert text[14797:14803] == 'encode'
with open("python-igraph-0.7.1.post6/igraph/drawing/__init__.py", 'w') as file:
file.write(text[:14797] + "decode" + text[14803:])
!pip install --no-index --find-links="." python-igraph
解决了问题。 (尽管在最后一次安装pip时,Colab挂了很长时间很奇怪。)