在OS X上使用Enthought Canopy安装igraph

0 投票
1 回答
663 浏览
提问于 2025-04-18 08:35

操作系统:OS X 10.9.3

Canopy版本:1.4.0(64位)

我尝试了很多方法来安装python-igraph,但都没有成功。下面是我最近的两次尝试。如果有任何建议,我将非常感激。

第一次尝试是在Canopy里面使用setup.py:

%cd "/Users/user/Downloads/python-igraph-0.7"
/Users/user/Downloads/python-igraph-0.7
run -i setup.py install
running install
running bdist_egg
running egg_info
writing python_igraph.egg-info/PKG-INFO
writing top-level names to python_igraph.egg-info/top_level.txt
writing dependency_links to python_igraph.egg-info/dependency_links.txt
reading manifest file 'python_igraph.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'python_igraph.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.6-x86_64/egg
running install_lib
running build_py
running build_ext
Cannot find the C core of igraph on this system using pkg-config.
We will now try to download and compile the C core from scratch.
Version number of the C core: 0.7
We will also try: 0.7.0

Version 0.7 of the C core of igraph is not found among the nightly builds.
Use the --c-core-version switch to try a different version.

Could not download and compile the C core of igraph.

WARNING: we were not able to detect where igraph is installed on
your machine (if it is installed at all). We will use the fallback
library and include pathss hardcoded in setup.py and hope that the
C core of igraph is installed there.

If the compilation fails and you are sure that igraph is installed
on your machine, adjust the following two variables in setup.py
accordingly and try again:

- LIBIGRAPH_FALLBACK_INCLUDE_DIRS
- LIBIGRAPH_FALLBACK_LIBRARY_DIRS

Build type: dynamic extension                                    
Include path: /usr/include/igraph /usr/local/include/igraph
Library path: 
Linked dynamic libraries: igraph
Linked static libraries: 
Extra compiler options: 
Extra linker options: 
building 'igraph._igraph' extension
gcc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -DNDEBUG -g -O3 -arch x86_64 -I/usr/include/igraph -I/usr/local/include/igraph -I../../build/include -I../../include -I/usr/local/include/igraph -I/usr/include/igraph -I/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/include/python2.7 -c src/arpackobject.c -o build/temp.macosx-10.6-x86_64-2.7/src/arpackobject.o
An exception has occurred, use %tb to see the full traceback.

SystemExit: error: command 'gcc' failed with exit status 1

第二次尝试是通过命令行:python setup.py install

curiosity:python-igraph-0.7 user$ sudo python setup.py install
Password:
running install
running bdist_egg
running egg_info
writing python_igraph.egg-info/PKG-INFO
writing top-level names to python_igraph.egg-info/top_level.txt
writing dependency_links to python_igraph.egg-info/dependency_links.txt
reading manifest file 'python_igraph.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'python_igraph.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.6-x86_64/egg
running install_lib
running build_py
running build_ext
Build type: dynamic extension
Include path: /opt/local/include/igraph
Library path: /opt/local/lib
Linked dynamic libraries: igraph
Linked static libraries: 
Extra compiler options: 
Extra linker options: 
building 'igraph._igraph' extension
gcc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -DNDEBUG -g -O3 -arch x86_64 -I/opt/local/include/igraph -I../../build/include -I../../include -I/usr/local/include/igraph -I/usr/include/igraph -I/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/include/python2.7 -c src/arpackobject.c -o build/temp.macosx-10.6-x86_64-2.7/src/arpackobject.o
gcc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -DNDEBUG -g -O3 -arch x86_64 -I/opt/local/include/igraph -I../../build/include -I../../include -I/usr/local/include/igraph -I/usr/include/igraph -I/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/include/python2.7 -c src/attributes.c -o build/temp.macosx-10.6-x86_64-2.7/src/attributes.o
In file included from src/attributes.c:26:
src/convert.h:64:59: error: unknown type name 'igraph_pagerank_algo_t'
int igraphmodule_PyObject_to_pagerank_algo_t(PyObject *o, igraph_pagerank_algo_t *result);
                                                          ^
src/attributes.c:307:12: error: use of undeclared identifier 'IGRAPH_ATTRIBUTE_BOOLEAN'
      case IGRAPH_ATTRIBUTE_BOOLEAN:
           ^
src/attributes.c:455:14: error: use of undeclared identifier 'IGRAPH_ATTRIBUTE_BOOLEAN'
        case IGRAPH_ATTRIBUTE_BOOLEAN:
             ^
src/attributes.c:514:14: error: use of undeclared identifier 'IGRAPH_ATTRIBUTE_BOOLEAN'
        case IGRAPH_ATTRIBUTE_BOOLEAN:
             ^
src/attributes.c:638:14: error: use of undeclared identifier 'IGRAPH_ATTRIBUTE_BOOLEAN'
        case IGRAPH_ATTRIBUTE_BOOLEAN:
             ^
src/attributes.c:699:14: error: use of undeclared identifier 'IGRAPH_ATTRIBUTE_BOOLEAN'
        case IGRAPH_ATTRIBUTE_BOOLEAN:
             ^
src/attributes.c:1367:27: error: use of undeclared identifier 'IGRAPH_ATTRIBUTE_BOOLEAN'
          VECTOR(*t)[j] = IGRAPH_ATTRIBUTE_BOOLEAN;
                          ^
src/attributes.c:1457:13: error: use of undeclared identifier 'IGRAPH_ATTRIBUTE_BOOLEAN'
    *type = IGRAPH_ATTRIBUTE_BOOLEAN;
            ^
src/attributes.c:1832:3: warning: incompatible pointer types initializing 'int (*)(const igraph_t *, const char *, igraph_vs_t, igraph_vector_t *)' with an
      expression of type 'int (const igraph_t *, const char *, igraph_vector_bool_t *)' [-Wincompatible-pointer-types]
  igraphmodule_i_get_boolean_graph_attr,
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/attributes.c:1833:3: warning: incompatible pointer types initializing 'int (*)(const igraph_t *, const char *, igraph_vs_t, igraph_strvector_t *)' with an
      expression of type 'int (const igraph_t *, const char *, igraph_vs_t, igraph_vector_t *)' [-Wincompatible-pointer-types]
  igraphmodule_i_get_numeric_vertex_attr,
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/attributes.c:1834:3: warning: incompatible pointer types initializing 'int (*)(const igraph_t *, const char *, igraph_es_t, igraph_vector_t *)' with an
      expression of type 'int (const igraph_t *, const char *, igraph_vs_t, igraph_strvector_t *)' [-Wincompatible-pointer-types]
  igraphmodule_i_get_string_vertex_attr,
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/attributes.c:1835:3: warning: incompatible pointer types initializing 'int (*)(const igraph_t *, const char *, igraph_es_t, igraph_strvector_t *)' with an
      expression of type 'int (const igraph_t *, const char *, igraph_vs_t, igraph_vector_bool_t *)' [-Wincompatible-pointer-types]
  igraphmodule_i_get_boolean_vertex_attr,
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/attributes.c:1836:3: warning: excess elements in struct initializer
  igraphmodule_i_get_numeric_edge_attr,
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 warnings and 8 errors generated.
error: command 'gcc' failed with exit status 1

补充说明:添加了当前的ImportError文本:

>>> import igraph
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named igraph
>>> exit()

1 个回答

0

我终于搞明白了这个问题。非常感谢 +Tamas 的耐心演示。现在的磁盘镜像文件不够强大,无法处理 Enthought Canopy 发行版的独特安装位置。我在尝试安装 igraph 的顺序上也犯了一些错误。正确的步骤是 首先 更新 igraph 的 C 核心,然后使用 相应的 源代码来安装 python-igraph,方法是用 [ % python setup.py install ]。

撰写回答