Pip install pygraphviz fails: Failed building wheel for pygraphviz
Asked Answered
S

5

44

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.

Synapse answered 26/10, 2016 at 15:41 Comment(3)
Reason is: 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. You can find solution using google.Categorical
Did you install libcgraph?Spherics
Installation official documentation can be found here: pygraphviz.github.io/documentation/stable/install.htmlWindup
S
5

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.

Synapse answered 26/10, 2016 at 16:15 Comment(1)
an even better version for m1+ macs https://mcmap.net/q/242802/-python-does-not-see-pygraphvizEnforce
D
57

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
Dougall answered 4/1, 2020 at 8:52 Comment(5)
this is not a solution for MacOS! but it may work on Debian or derivatives...Conto
what if I cannot run apt-get?Elvaelvah
This don't work for me on Ubuntu 18.04 and Python 3.9Tarrance
This is the problem. You need the actual program first. It would be great if the developer had an error to remind users to do this.Koblas
I think we also need this as well. graphviz-devClitoris
G
19

This fixed it for me:

python3 -m pip install -U --no-cache-dir  \
            --config-settings="--global-option=build_ext" \
            --config-settings="--global-option=-I$(brew --prefix graphviz)/include/" \
            --config-settings="--global-option=-L$(brew --prefix graphviz)/lib/" \
            pygraphviz

Credits to this GitHub reply, to which I only added the -U and --no-cache-dir flags.

Geostatic answered 2/5, 2023 at 10:31 Comment(3)
Works for Apple M2Rameriz
Worked for my MacOS Ventura in Apple M2 as well.. +1Firewater
amazing, this one worked for me on M2 Pro, Sonoma.Nace
M
16

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
Magenta answered 10/3, 2023 at 19:32 Comment(1)
Working on MacOs 13.3.1, M2 ProTyne
R
13

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.

Richie answered 16/4, 2020 at 19:27 Comment(0)
S
5

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.

Synapse answered 26/10, 2016 at 16:15 Comment(1)
an even better version for m1+ macs https://mcmap.net/q/242802/-python-does-not-see-pygraphvizEnforce

© 2022 - 2024 — McMap. All rights reserved.