Pip install pygraphviz fails: Failed building wheel for pygraphviz

23,983

Solution 1

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.

Solution 2

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

Solution 3

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.

Share:
23,983
Unis
Author by

Unis

Updated on July 14, 2022

Comments

  • Unis
    Unis almost 2 years

    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('\r\n', '\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('\r\n', '\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('\r\n', '\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.