0

我尝试了一段时间为我的 EPD-python 安装 python-igraph-0.6 模块。我构建了 C 核心,并按照我在各个站点上的说明进行操作:

/home/joseph/epd/bin/python setup.py build

或者

/home/joseph/epd/bin/python setup.py install

它总是产生相同的错误:

error: command 'gcc' failed with exit status 1

我必须做出可能的解释:“gcc”工作不正常(但我已经用 ./configure、make、make install 编译了 C 部分)或者某些东西没有以某种方式正确链接。我已经看过类似的帖子并安装了 python-devel 包等等......但没有任何改变。

完整的输出是:

[root@joseph python-igraph-0.6]# /home/joseph/epd/bin/python setup.py build
Using default include and library paths for compilation
If the compilation fails, please edit the LIBIGRAPH_FALLBACK_*
variables in setup.py or include_dirs and library_dirs in 
setup.cfg to point to the correct directories and libraries
where the C core of igraph is installed
()
Include path: /usr/include /usr/local/include
Library path: 
running build
running build_py
running build_ext
building 'igraph._igraph' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -O2 -fPIC -I/usr/include     -I/usr        /local    /include -I../../build/include -I../../include -I/usr/local    /include -I/usr/include -I/home/joseph/epd/include/python2.7 -c src/common.c -o     build/temp.linux-x86_64-2.7/src/common.o
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -O2 -fPIC -I/usr/include -I/usr/local/include -I../../build/include -I../../include -I/usr/local/include -I/usr/include -I/home/joseph/epd/include/python2.7 -c src/arpackobject.c -o build/temp.linux-x86_64-2.7/src/arpackobject.o
In file included from src/arpackobject.c:23:0:
src/arpackobject.h:27:27: fatal error: igraph_arpack.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
4

1 回答 1

2

您收到的错误消息表明编译器找不到绑定到 igraph 的 C 核心所需的标头。特别是它缺少一个名为 的文件igraph_arpack.h,但这不是唯一的,在此消息之后还会gcc继续编译。

igraph 的 Python 接口的setup.py脚本依赖于pkg-config找出在哪里可以找到标头,但是在您的系统中这会失败,可能是因为pkg-config它本身没有安装。所以,我想解决方案如下:

  1. 确保make install在编译 C 内核后运行。你声称你这样做了,但为了完整起见,我想我还是会提到它。

  2. pkg-config在您的系统上安装。

  3. 通过键入来检查是否pkg-config了解 igraph 已安装的 C 核心pkg-config --cflags --libs igraph。如果您看到一堆编译器选项打印到标准输出中,那就没问题了。

  4. 再跑python setup.py install。这一次应该调用pkg-config成功,获得所需的编译器选项,并成功编译 Python 接口。

如果它仍然不起作用(例如,因为您无法pkg-config上班),您可以打开setup.cfg并编辑include_dirslibrary_dirs变量;前者应指向要找到 igraph 包含文件的文件夹(通常为/usr/local/include/igraph/usr/include/igraph,具体取决于您安装 C 内核的确切位置),后者应指向所在的文件夹libigraph.so)。

于 2012-12-09T19:59:30.513 回答