我正在使用igraph和networkx,并且尝试通过以下方式将我的nx图转换为igraph图
nx.write_graphml(nx_graph,filepath) # Export NX graph to file
ig_graph = ig.read(filepath,format="graphml") # Create new IG graph from file
这在一个机器上可以很好地工作,但是在另一个机器上我得到了错误
SystemError:类型为0x000002488D3FEE58的object类型的内置方法Read_GraphML返回NULL而不设置错误
我运行Windows10和Python 3.5。 有趣的是,在工作机上,python-igraph版本被指定为 在故障系统上为“ 0.7.1”,而在故障系统上为“ 0.7.1 + 5.3b99dbf6”,尽管我相当确定通过Christoph Gohlke的文件完成了相同的安装过程。
在像这样的简单测试设置中也会发生错误:
import igraph as ig
g = ig.Graph.Famous("zachary")
g.save("zachary.graphml")
g=ig.load("zachary.graphml")
因此,我敢肯定与networkx生成的文件无关,但我的igraph配置一定有问题。 我真的不知道系统的差异可能在哪里,所以如果您有任何想法请告诉我。
谢谢! :)
编辑:我也运行了测试套件
import igraph.test
igraph.test.run_tests()
它在两种设置上都运行良好-甚至是错误的设置。
答案 0 :(得分:1)
我认为您在python-igraph
的文件处理例程中遇到了一个已知错误,该错误仅在Python 3.x上才显示(但在Python 2.x上却没有)。 This is the issue在错误跟踪器中; this is the explanation和this is the patch that fixes it。不幸的是,由于该补丁以来没有新版本发布,因此您需要自行重新编译igraph才能摆脱它。
但是,请注意,只有在尝试加载图形时出现错误(异常)时才会触发该错误。我的第一个猜测是第二个系统上的igraph是在没有GraphML支持的情况下构建的,因此加载程序在读取文件时抛出异常(说明此构建中不存在GraphML的支持),从而触发了该错误。