Pip install pygraphviz fails: Failed building wheel for pygraphviz

Question:

I have troubles installing pygraphviz on macOS 10.10.5. I have a fully functional installation of Python 2.7.x, and I’d like to run the test example of queueing-tool, which requires installing pygraphviz using pip.

When executing the command pip install pygraphviz, I get the following lengthy error message:

Collecting pygraphviz
  Using cached pygraphviz-1.3.1.zip
Building wheels for collected packages: pygraphviz
  Running setup.py bdist_wheel for pygraphviz ... error
  Complete output from command /usr/local/opt/python/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('rn', 'n'), __file__, 'exec'))" bdist_wheel -d /var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/tmpcYcoACpip-wheel- --python-tag cp27:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.macosx-10.10-x86_64-2.7
  creating build/lib.macosx-10.10-x86_64-2.7/pygraphviz
  copying pygraphviz/__init__.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz
  copying pygraphviz/agraph.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz
  copying pygraphviz/graphviz.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz
  copying pygraphviz/release.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz
  copying pygraphviz/version.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz
  creating build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/__init__.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_attribute_defaults.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_attributes.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_clear.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_drawing.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_edge_attributes.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_graph.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_html.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_layout.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_node_attributes.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_readwrite.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_string.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_subgraph.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  copying pygraphviz/tests/test_unicode.py -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz/tests
  running 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
  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.10-x86_64-2.7/pygraphviz
  copying pygraphviz/graphviz_wrap.c -> build/lib.macosx-10.10-x86_64-2.7/pygraphviz
  running build_ext
  building 'pygraphviz._graphviz' extension
  creating build/temp.macosx-10.10-x86_64-2.7
  creating build/temp.macosx-10.10-x86_64-2.7/pygraphviz
  clang -fno-strict-aliasing -fno-common -dynamic -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c pygraphviz/graphviz_wrap.c -o build/temp.macosx-10.10-x86_64-2.7/pygraphviz/graphviz_wrap.o
  pygraphviz/graphviz_wrap.c:3321:12: warning: incompatible pointer to integer conversion returning 'Agsym_t *' (aka 'struct Agsym_s *') from a function with result type 'int' [-Wint-conversion]
      return agattr(g, kind, name, val);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~
  pygraphviz/graphviz_wrap.c:3405:7: warning: unused variable 'fd1' [-Wunused-variable]
    int fd1 ;
        ^
  pygraphviz/graphviz_wrap.c:3406:13: warning: unused variable 'mode_obj1' [-Wunused-variable]
    PyObject *mode_obj1 ;
              ^
  pygraphviz/graphviz_wrap.c:3407:13: warning: unused variable 'mode_byte_obj1' [-Wunused-variable]
    PyObject *mode_byte_obj1 ;
              ^
  pygraphviz/graphviz_wrap.c:3408:9: warning: unused variable 'mode1' [-Wunused-variable]
    char *mode1 ;
          ^
  pygraphviz/graphviz_wrap.c:3463:7: warning: unused variable 'fd2' [-Wunused-variable]
    int fd2 ;
        ^
  pygraphviz/graphviz_wrap.c:3464:13: warning: unused variable 'mode_obj2' [-Wunused-variable]
    PyObject *mode_obj2 ;
              ^
  pygraphviz/graphviz_wrap.c:3465:13: warning: unused variable 'mode_byte_obj2' [-Wunused-variable]
    PyObject *mode_byte_obj2 ;
              ^
  pygraphviz/graphviz_wrap.c:3466:9: warning: unused variable 'mode2' [-Wunused-variable]
    char *mode2 ;
          ^
  9 warnings generated.
  clang -bundle -undefined dynamic_lookup build/temp.macosx-10.10-x86_64-2.7/pygraphviz/graphviz_wrap.o -L/usr/local/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/sqlite/lib -lcgraph -lcdt -o build/lib.macosx-10.10-x86_64-2.7/pygraphviz/_graphviz.so
  installing to build/bdist.macosx-10.10-x86_64/wheel
  running install
  Trying pkg-config
  Package libcgraph was not found in the pkg-config search path.
  Perhaps you should add the directory containing `libcgraph.pc'
  to the PKG_CONFIG_PATH environment variable
  No package 'libcgraph' found
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup.py", line 87, in <module>
      tests_require=['nose>=0.10.1', 'doctest-ignore-unicode>=0.1.0',],
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
      dist.run_commands()
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
      self.run_command(cmd)
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
      cmd_obj.run()
    File "/usr/local/lib/python2.7/site-packages/wheel/bdist_wheel.py", line 215, in run
      self.run_command('install')
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
      self.distribution.run_command(command)
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
      cmd_obj.run()
    File "/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup_commands.py", line 44, in modified_run
      self.include_path, self.library_path = get_graphviz_dirs()
    File "/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup_extra.py", line 121, in get_graphviz_dirs
      include_dirs, library_dirs = _pkg_config()
    File "/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup_extra.py", line 44, in _pkg_config
      output = S.check_output(['pkg-config', '--libs-only-L', 'libcgraph'])
    File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 574, in check_output
      raise CalledProcessError(retcode, cmd, output=output)
  subprocess.CalledProcessError: Command '['pkg-config', '--libs-only-L', 'libcgraph']' returned non-zero exit status 1

  ----------------------------------------
  Failed building wheel for pygraphviz
  Running setup.py clean for pygraphviz
Failed to build pygraphviz
Installing collected packages: pygraphviz
  Running setup.py install for pygraphviz ... error
    Complete output from command /usr/local/opt/python/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('rn', 'n'), __file__, 'exec'))" install --record /var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-7HXgN6-record/install-record.txt --single-version-externally-managed --compile:
    running install
    Trying pkg-config
    Package libcgraph was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libcgraph.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libcgraph' found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup.py", line 87, in <module>
        tests_require=['nose>=0.10.1', 'doctest-ignore-unicode>=0.1.0',],
      File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
        dist.run_commands()
      File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
        self.run_command(cmd)
      File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup_commands.py", line 44, in modified_run
        self.include_path, self.library_path = get_graphviz_dirs()
      File "/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup_extra.py", line 121, in get_graphviz_dirs
        include_dirs, library_dirs = _pkg_config()
      File "/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup_extra.py", line 44, in _pkg_config
        output = S.check_output(['pkg-config', '--libs-only-L', 'libcgraph'])
      File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 574, in check_output
        raise CalledProcessError(retcode, cmd, output=output)
    subprocess.CalledProcessError: Command '['pkg-config', '--libs-only-L', 'libcgraph']' returned non-zero exit status 1

    ----------------------------------------
Command "/usr/local/opt/python/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('rn', 'n'), __file__, 'exec'))" install --record /var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-7HXgN6-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/x3/nr48r8q10dv1lb9l9t_yx7kh0000gq/T/pip-build-Ljj4Ox/pygraphviz/

I am unsure about how to address the above error. All other Python packages, such as numpy or networkx, were straightforward to install. Any help would be greatly appreciated. Thanks a lot in advance.

Asked By: Unis

||

Answers:

The comment by Andrew brought me on the right path. Thank you for that.

It turns out that a detailed solution for installing pygraphviz on macOS is already available on stackoverflow, see this solution by teut.

Answered By: Unis

Try this :

sudo apt-get install python-dev graphviz libgraphviz-dev pkg-config

or the following might be needed if you’re using Python 3:

sudo apt-get install python3-dev graphviz libgraphviz-dev pkg-config

then

sudo pip install pygraphviz
Answered By: hassanzadeh.sd

Basically you need to download graphviz first using brew:

brew install graphviz

pip install graphviz

pip install pygraphviz 

You can also try using pip3 in place of pip just in case there is Python’s version issue. Hope it helps.

Answered By: Shivam Tyagi

This worked for me (M1 Mac)

brew install graphviz
python -m pip install 
    --global-option=build_ext 
    --global-option="-I$(brew --prefix graphviz)/include/" 
    --global-option="-L$(brew --prefix graphviz)/lib/" 
    pygraphviz
Answered By: Yusuf Ganiyu