3

Note: This problem is not covered in any of these posts: 1, 2, 3.

The aim is to get PyGraphviz installed to work with visualualization tools provided by python-weka-wrapper. I just couldn't install PyGraphviz. The following is the error I get when trying from pip

$ sudo pip install git+git://github.com/pygraphviz/pygraphviz.git
Password:
The directory '/Users/Ebe/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/Ebe/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting git+git://github.com/pygraphviz/pygraphviz.git
  Cloning git://github.com/pygraphviz/pygraphviz.git to /tmp/pip-rMp2aK-build
Installing collected packages: pygraphviz
  Running setup.py install for pygraphviz ... error
    Complete output from command /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/tmp/pip-rMp2aK-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-CrnqPI-record/install-record.txt --single-version-externally-managed --compile:
    /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools/dist.py:282: UserWarning: Normalizing '1.4.dev' to '1.4.dev0'
      normalized_version,
    running install
    Trying pkg-config
    include_dirs=/opt/local/include/graphviz
    library_dirs=/opt/local/lib
    running build
    running build_py
    creating build
    creating build/lib.macosx-10.9-x86_64-2.7
    creating build/lib.macosx-10.9-x86_64-2.7/pygraphviz
    copying pygraphviz/__init__.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz
    copying pygraphviz/agraph.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz
    copying pygraphviz/graphviz.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz
    copying pygraphviz/release.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz
    copying pygraphviz/version.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz
    creating build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/__init__.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_attribute_defaults.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_attributes.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_clear.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_drawing.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_edge_attributes.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_graph.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_html.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_layout.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_node_attributes.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_readwrite.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_string.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_subgraph.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    copying pygraphviz/tests/test_unicode.py -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz/tests
    running egg_info
    creating pygraphviz.egg-info
    writing pygraphviz.egg-info/PKG-INFO
    writing top-level names to pygraphviz.egg-info/top_level.txt
    writing dependency_links to pygraphviz.egg-info/dependency_links.txt
    writing manifest file 'pygraphviz.egg-info/SOURCES.txt'
    warning: manifest_maker: standard file '-c' not found

    reading manifest file 'pygraphviz.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    warning: no previously-included files matching '*~' found anywhere in distribution
    warning: no previously-included files matching '*.pyc' found anywhere in distribution
    warning: no previously-included files matching '.svn' found anywhere in distribution
    no previously-included directories found matching 'doc/build'
    writing manifest file 'pygraphviz.egg-info/SOURCES.txt'
    copying pygraphviz/graphviz.i -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz
    copying pygraphviz/graphviz_wrap.c -> build/lib.macosx-10.9-x86_64-2.7/pygraphviz
    running build_ext
    building 'pygraphviz._graphviz' extension
    creating build/temp.macosx-10.9-x86_64-2.7
    creating build/temp.macosx-10.9-x86_64-2.7/pygraphviz
    /usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -pipe -Os -fwrapv -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/opt/local/include/graphviz -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c pygraphviz/graphviz_wrap.c -o build/temp.macosx-10.9-x86_64-2.7/pygraphviz/graphviz_wrap.o
    pygraphviz/graphviz_wrap.c:2987:10: fatal error: 'graphviz/cgraph.h' file not found
    #include "graphviz/cgraph.h"
             ^
    1 error generated.
    error: command '/usr/bin/clang' failed with exit status 1

    ----------------------------------------
Command "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/tmp/pip-rMp2aK-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-CrnqPI-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-rMp2aK-build/

Graphviz was installed with the help of MacPorts. It's path is clear in the above result

include_dirs=/opt/local/include/graphviz
library_dirs=/opt/local/lib

The graphviz/cgraph.h is also present. So what's going wrong with the installation.

I tried everything in the net, but nothing seems to work. Here is a full list of what I tried.

  • Installing from git:

    sudo pip install git+git://github.com/pygraphviz/pygraphviz.git

  • Installing from setup.py from package source:

    sudo python setup.py install

  • Installing with include and library paths along win command line:

    sudo python setup.py install --include-path=/opt/local/include/graphviz --library-path=/opt/local/lib/graphviz

Each one of them throws the same error.

What should I do?

Community
  • 1
  • 1
Ébe Isaac
  • 11,563
  • 17
  • 64
  • 97

3 Answers3

1

Try using instead: include_dirs=/opt/local/include

Aric
  • 24,511
  • 5
  • 78
  • 77
  • this would benefit from showing the actual command line. is it with an `include_dirs=xxx pip install ...`, i.e a temp environment variable? is it a `--include_dirs` flag to pip? who knows? – JL Peyret May 17 '20 at 20:30
1

This works fine for me:

pip install --global-option=build_ext --global-option="-I/opt/local/include/" --global-option="-L/opt/local/lib" PyGraphviz

Reference: python pip specify a library directory and an include directory

whitecoffee
  • 957
  • 6
  • 8
  • worked for me as well. straight out of the box, no fuss. keep in mind, OP is on macports, so a Brew would look different i.e. probably `/usr/local`. – JL Peyret May 17 '20 at 20:34
1

This works fine for me:

pip install --install-option="--include-path=/usr/local/include/" --install-option="--library-path=/usr/local/lib/" pygraphviz

Reference: PyGraphvizをmacOSにインストールする

José Renato
  • 136
  • 2
  • 5
  • that looks like a Brew-based install, whereas the OP was asking about macports. note the different `/usr/local` vs `/opt/local`. paths. probably works, if you are on Brew, but whitecoffee's port-relevant answer did the trick for me. – JL Peyret May 17 '20 at 20:33