'nbdev': Package included in requirements of settings.ini but still not properly installing

I’m developing a package recursion-visualizer with nbdev2. Although all of the packages used to develop recursion-visualizer work in my mamba environment, when I push my code to github the Deploy to Github Pages and CI actions both fail.

The Details

My package recursion-visualizer uses the package pygraphviz, a Python interface to the Graphviz graph visualization package. I included pygraphviz in requirements of settings.ini:

Yet when I push to my github repository, the Deploy to Github Pages action failed with the error (scroll down to see the error):

Run fastai/workflows/quarto-ghp@master
Run actions/checkout@v3
Syncing repository: ez2rok/recursion-visualizer
Getting Git version info
Temporarily overriding HOME='/home/runner/work/_temp/d6a[4](https://github.com/ez2rok/recursion-visualizer/runs/8295002784?check_suite_focus=true#step:2:5)7fed-b8df-49d9-9659-ae5a25a584d5' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
/usr/bin/git config --global --add safe.directory /home/runner/work/recursion-visualizer/recursion-visualizer
Deleting the contents of '/home/runner/work/recursion-visualizer/recursion-visualizer'
Initializing the repository
Disabling automatic garbage collection
Setting up auth
Fetching the repository
Determining the checkout info
Checking out the ref
/usr/bin/git log -1 --format='%H'
'c200a38885d75cb1dd78be8943a2f6eaf46ff54e'
Run actions/setup-python@v3
Successfully setup CPython (3.10.6)
Run python -m pip install --upgrade pip
Requirement already satisfied: pip in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (22.2.2)
Obtaining file:///home/runner/work/recursion-visualizer/recursion-visualizer
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting networkx>=2.8.6
  Downloading networkx-2.8.6-py3-none-any.whl (2.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 50.5 MB/s eta 0:00:00
Collecting plotly>=5.10.0
  Downloading plotly-5.10.0-py2.py3-none-any.whl ([15](https://github.com/ez2rok/recursion-visualizer/runs/8295002784?check_suite_focus=true#step:2:17).2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.2/15.2 MB 75.6 MB/s eta 0:00:00
Collecting pygraphviz>=1.10
  Downloading pygraphviz-1.10.zip (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 kB 34.5 MB/s eta 0:00:00
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: fastcore>=1.5.22 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from recursion-visualizer==0.0.1) (1.5.26)
Requirement already satisfied: nbdev>=2.2.8 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from recursion-visualizer==0.0.1) (2.2.10)
Requirement already satisfied: pip in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from fastcore>=1.5.22->recursion-visualizer==0.0.1) (22.2.2)
Requirement already satisfied: packaging in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from fastcore>=1.5.22->recursion-visualizer==0.0.1) (21.3)
Requirement already satisfied: execnb>=0.1.2 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.1.3)
Requirement already satisfied: PyYAML in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from nbdev>=2.2.8->recursion-visualizer==0.0.1) (6.0)
Requirement already satisfied: ghapi>=1.0.2 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from nbdev>=2.2.8->recursion-visualizer==0.0.1) (1.0.2)
Requirement already satisfied: astunparse in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from nbdev>=2.2.8->recursion-visualizer==0.0.1) (1.6.3)
Collecting tenacity>=6.2.0
  Downloading tenacity-8.0.1-py3-none-any.whl (24 kB)
Requirement already satisfied: ipython in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (8.5.0)
Requirement already satisfied: wheel<1.0,>=0.23.0 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from astunparse->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.37.1)
Requirement already satisfied: six<2.0,>=1.6.1 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from astunparse->nbdev>=2.2.8->recursion-visualizer==0.0.1) (1.[16](https://github.com/ez2rok/recursion-visualizer/runs/8295002784?check_suite_focus=true#step:2:18).0)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from packaging->fastcore>=1.5.[22](https://github.com/ez2rok/recursion-visualizer/runs/8295002784?check_suite_focus=true#step:2:25)->recursion-visualizer==0.0.1) (3.0.9)
Requirement already satisfied: decorator in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (5.1.1)
Requirement already satisfied: pygments>=2.4.0 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (2.13.0)
Requirement already satisfied: pexpect>4.3 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (4.8.0)
Requirement already satisfied: prompt-toolkit<3.1.0,>3.0.1 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (3.0.31)
Requirement already satisfied: backcall in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.2.0)
Requirement already satisfied: pickleshare in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.7.5)
Requirement already satisfied: stack-data in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.5.0)
Requirement already satisfied: traitlets>=5 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (5.3.0)
Requirement already satisfied: jedi>=0.16 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.18.1)
Requirement already satisfied: matplotlib-inline in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.1.6)
Requirement already satisfied: parso<0.9.0,>=0.8.0 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from jedi>=0.16->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.8.3)
Requirement already satisfied: ptyprocess>=0.5 in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from pexpect>4.3->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.7.0)
Requirement already satisfied: wcwidth in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from prompt-toolkit<3.1.0,>3.0.1->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.2.5)
Requirement already satisfied: asttokens in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from stack-data->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (2.0.8)
Requirement already satisfied: pure-eval in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from stack-data->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.2.2)
Requirement already satisfied: executing in /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages (from stack-data->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (1.0.0)
Building wheels for collected packages: pygraphviz
  Building wheel for pygraphviz (setup.py): started
  Building wheel for pygraphviz (setup.py): finished with status 'error'
  error: subprocess-exited-with-error
  
  Running setup.py clean for pygraphviz
  Γ— python setup.py bdist_wheel did not run successfully.
  β”‚ exit code: 1
  ╰─> [55 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-310
      creating build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/testing.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/agraph.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/scraper.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/graphviz.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/__init__.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      creating build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_edge_attributes.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_node_attributes.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_attribute_defaults.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_close.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_layout.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_graph.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_string.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_html.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_scraper.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_readwrite.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_clear.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_unicode.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_repr_mimebundle.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_drawing.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_subgraph.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/__init__.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      running egg_info
      writing pygraphviz.egg-info/PKG-INFO
      writing dependency_links to pygraphviz.egg-info/dependency_links.txt
      writing top-level names to pygraphviz.egg-info/top_level.txt
      reading manifest file 'pygraphviz.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching '*.png' under directory 'doc'
      warning: no files found matching '*.txt' under directory 'doc'
      warning: no files found matching '*.css' under directory 'doc'
      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'
      adding license file 'LICENSE'
      writing manifest file 'pygraphviz.egg-info/SOURCES.txt'
      copying pygraphviz/graphviz.i -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/graphviz_wrap.c -> build/lib.linux-x86_64-cpython-310/pygraphviz
      running build_ext
      building 'pygraphviz._graphviz' extension
      creating build/temp.linux-x86_64-cpython-310
      creating build/temp.linux-x86_64-cpython-310/pygraphviz
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DSWIG_PYTHON_STRICT_BYTE_CHAR -I/opt/hostedtoolcache/Python/3.10.6/x64/include/python3.10 -c pygraphviz/graphviz_wrap.c -o build/temp.linux-x86_64-cpython-310/pygraphviz/graphviz_wrap.o
      pygraphviz/graphviz_wrap.c:2711:10: fatal error: graphviz/cgraph.h: No such file or directory
       2711 | #include "graphviz/cgraph.h"
            |          ^~~~~~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pygraphviz
Failed to build pygraphviz
Installing collected packages: tenacity, pygraphviz, networkx, plotly, recursion-visualizer
  Running setup.py install for pygraphviz: started
  Running setup.py install for pygraphviz: finished with status 'error'
  error: subprocess-exited-with-error
  
  Γ— Running setup.py install for pygraphviz did not run successfully.
  β”‚ exit code: 1
  ╰─> [57 lines of output]
      running install
      /opt/hostedtoolcache/Python/3.10.6/x64/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
        warnings.warn(
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-310
      creating build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/testing.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/agraph.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/scraper.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/graphviz.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/__init__.py -> build/lib.linux-x86_64-cpython-310/pygraphviz
      creating build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_edge_attributes.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_node_attributes.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_attribute_defaults.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_close.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_layout.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_graph.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_string.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_html.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_scraper.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_readwrite.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_clear.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_unicode.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_repr_mimebundle.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_drawing.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/test_subgraph.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      copying pygraphviz/tests/__init__.py -> build/lib.linux-x86_64-cpython-310/pygraphviz/tests
      running egg_info
      writing pygraphviz.egg-info/PKG-INFO
      writing dependency_links to pygraphviz.egg-info/dependency_links.txt
      writing top-level names to pygraphviz.egg-info/top_level.txt
      reading manifest file 'pygraphviz.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching '*.png' under directory 'doc'
      warning: no files found matching '*.txt' under directory 'doc'
      warning: no files found matching '*.css' under directory 'doc'
      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'
      adding license file 'LICENSE'
      writing manifest file 'pygraphviz.egg-info/SOURCES.txt'
      copying pygraphviz/graphviz.i -> build/lib.linux-x86_64-cpython-310/pygraphviz
      copying pygraphviz/graphviz_wrap.c -> build/lib.linux-x86_64-cpython-310/pygraphviz
      running build_ext
      building 'pygraphviz._graphviz' extension
      creating build/temp.linux-x86_64-cpython-310
      creating build/temp.linux-x86_64-cpython-310/pygraphviz
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DSWIG_PYTHON_STRICT_BYTE_CHAR -I/opt/hostedtoolcache/Python/3.10.6/x64/include/python3.10 -c pygraphviz/graphviz_wrap.c -o build/temp.linux-x86_64-cpython-310/pygraphviz/graphviz_wrap.o
      pygraphviz/graphviz_wrap.c:[271](https://github.com/ez2rok/recursion-visualizer/runs/8295002784?check_suite_focus=true#step:2:282)1:10: fatal error: graphviz/cgraph.h: No such file or directory
       2711 | #include "graphviz/cgraph.h"
            |          ^~~~~~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

Γ— Encountered error while trying to install package.
╰─> pygraphviz

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.
Error: Process completed with exit code 1.

and the CI action failed with the error (scroll down to see error)

12s
Run fastai/workflows/nbdev-ci@master
Run actions/checkout@v3
Syncing repository: ez2rok/recursion-visualizer
Getting Git version info
Temporarily overriding HOME='/home/runner/work/_temp/fc64fc57-c825-4438-aa80-[1](https://github.com/ez2rok/recursion-visualizer/runs/8295002783?check_suite_focus=true#step:2:1)6f90b775c[4](https://github.com/ez2rok/recursion-visualizer/runs/8295002783?check_suite_focus=true#step:2:5)f' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
/usr/bin/git config --global --add safe.directory /home/runner/work/recursion-visualizer/recursion-visualizer
Deleting the contents of '/home/runner/work/recursion-visualizer/recursion-visualizer'
Initializing the repository
Disabling automatic garbage collection
Setting up auth
Fetching the repository
Determining the checkout info
Checking out the ref
/usr/bin/git log -1 --format='%H'
'c200a38885d75cb1dd78be8943a2f6eaf46ff54e'
Run actions/setup-python@v3
Successfully setup CPython (3.9.13)
/opt/hostedtoolcache/Python/3.9.13/x64/bin/pip cache dir
/home/runner/.cache/pip
pip cache is not found
Run python -m pip install --upgrade pip
Requirement already satisfied: pip in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (22.2.2)
Collecting nbdev
  Downloading nbdev-2.2.10-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.0/62.0 kB 14.8 MB/s eta 0:00:00
Collecting PyYAML
  Downloading PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (661 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 661.8/661.8 kB 74.9 MB/s eta 0:00:00
Collecting astunparse
  Downloading astunparse-1.6.3-py2.py3-none-any.whl (12 kB)
Collecting fastcore>=1.5.24
  Downloading fastcore-1.5.26-py3-none-any.whl (67 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.1/67.1 kB 12.5 MB/s eta 0:00:00
Collecting ghapi>=1.0.2
  Downloading ghapi-1.0.2-py3-none-any.whl (57 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.7/57.7 kB 21.1 MB/s eta 0:00:00
Collecting execnb>=0.1.2
  Downloading execnb-0.1.3-py3-none-any.whl (13 kB)
Collecting ipython
  Downloading ipython-8.5.0-py3-none-any.whl (752 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 752.0/752.0 kB 66.8 MB/s eta 0:00:00
Collecting packaging
  Downloading packaging-21.3-py3-none-any.whl (40 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.8/40.8 kB 12.6 MB/s eta 0:00:00
Requirement already satisfied: pip in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from fastcore>=1.5.24->nbdev) (22.2.2)
Collecting six<2.0,>=1.6.1
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting wheel<1.0,>=0.23.0
  Downloading wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Collecting matplotlib-inline
  Downloading matplotlib_inline-0.1.6-py3-none-any.whl (9.4 kB)
Collecting backcall
  Downloading backcall-0.2.0-py2.py3-none-any.whl (11 kB)
Collecting pygments>=2.4.0
  Downloading Pygments-2.13.0-py3-none-any.whl (1.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 81.8 MB/s eta 0:00:00
Collecting stack-data
  Downloading stack_data-0.5.0-py3-none-any.whl (24 kB)
Collecting decorator
  Downloading decorator-5.1.1-py3-none-any.whl (9.1 kB)
Collecting jedi>=0.16
  Downloading jedi-0.18.1-py2.py3-none-any.whl (1.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 98.3 MB/s eta 0:00:00
Collecting prompt-toolkit<3.1.0,>3.0.1
  Downloading prompt_toolkit-3.0.31-py3-none-any.whl (382 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 382.3/382.3 kB 71.4 MB/s eta 0:00:00
Collecting traitlets>=5
  Downloading traitlets-5.3.0-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.8/106.8 kB 31.3 MB/s eta 0:00:00
Collecting pexpect>4.3
  Downloading pexpect-4.8.0-py2.py3-none-any.whl (59 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 59.0/59.0 kB 21.4 MB/s eta 0:00:00
Collecting pickleshare
  Downloading pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB)
Collecting pyparsing!=3.0.5,>=2.0.2
  Downloading pyparsing-3.0.9-py3-none-any.whl (98 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.3/98.3 kB 30.3 MB/s eta 0:00:00
Collecting parso<0.9.0,>=0.8.0
  Downloading parso-0.8.3-py2.py3-none-any.whl (100 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.8/100.8 kB 30.0 MB/s eta 0:00:00
Collecting ptyprocess>=0.5
  Downloading ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
Collecting wcwidth
  Downloading wcwidth-0.2.5-py2.py3-none-any.whl (30 kB)
Collecting asttokens
  Downloading asttokens-2.0.8-py2.py3-none-any.whl (23 kB)
Collecting pure-eval
  Downloading pure_eval-0.2.2-py3-none-any.whl (11 kB)
Collecting executing
  Downloading executing-1.0.0-py2.py3-none-any.whl (16 kB)
Installing collected packages: wcwidth, pure-eval, ptyprocess, pickleshare, executing, backcall, wheel, traitlets, six, PyYAML, pyparsing, pygments, prompt-toolkit, pexpect, parso, decorator, packaging, matplotlib-inline, jedi, astunparse, asttokens, stack-data, fastcore, ipython, ghapi, execnb, nbdev
Successfully installed PyYAML-6.0 asttokens-2.0.8 astunparse-1.6.3 backcall-0.2.0 decorator-5.1.1 execnb-0.1.3 executing-1.0.0 fastcore-1.5.26 ghapi-1.0.2 ipython-8.5.0 jedi-0.18.1 matplotlib-inline-0.1.6 nbdev-2.2.10 packaging-21.3 parso-0.8.3 pexpect-4.8.0 pickleshare-0.7.5 prompt-toolkit-3.0.31 ptyprocess-0.7.0 pure-eval-0.2.2 pygments-2.13.0 pyparsing-3.0.9 six-1.16.0 stack-data-0.5.0 traitlets-5.3.0 wcwidth-0.2.5 wheel-0.37.1
Doing editable install...
Obtaining file:///home/runner/work/recursion-visualizer/recursion-visualizer
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting networkx>=2.8.6
  Downloading networkx-2.8.6-py3-none-any.whl (2.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 83.0 MB/s eta 0:00:00
Collecting plotly>=5.10.0
  Downloading plotly-5.10.0-py2.py3-none-any.whl ([15](https://github.com/ez2rok/recursion-visualizer/runs/8295002783?check_suite_focus=true#step:2:17).2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.2/15.2 MB 95.0 MB/s eta 0:00:00
Collecting pygraphviz>=1.10
  Downloading pygraphviz-1.10.zip (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 kB 22.0 MB/s eta 0:00:00
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: fastcore>=1.5.22 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from recursion-visualizer==0.0.1) (1.5.26)
Requirement already satisfied: nbdev>=2.2.8 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from recursion-visualizer==0.0.1) (2.2.10)
Requirement already satisfied: packaging in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from fastcore>=1.5.22->recursion-visualizer==0.0.1) (21.3)
Requirement already satisfied: pip in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from fastcore>=1.5.22->recursion-visualizer==0.0.1) (22.2.2)
Requirement already satisfied: astunparse in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from nbdev>=2.2.8->recursion-visualizer==0.0.1) (1.6.3)
Requirement already satisfied: PyYAML in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from nbdev>=2.2.8->recursion-visualizer==0.0.1) (6.0)
Requirement already satisfied: execnb>=0.1.2 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.1.3)
Requirement already satisfied: ghapi>=1.0.2 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from nbdev>=2.2.8->recursion-visualizer==0.0.1) (1.0.2)
Collecting tenacity>=6.2.0
  Downloading tenacity-8.0.1-py3-none-any.whl (24 kB)
Requirement already satisfied: ipython in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (8.5.0)
Requirement already satisfied: six<2.0,>=1.6.1 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from astunparse->nbdev>=2.2.8->recursion-visualizer==0.0.1) (1.[16](https://github.com/ez2rok/recursion-visualizer/runs/8295002783?check_suite_focus=true#step:2:18).0)
Requirement already satisfied: wheel<1.0,>=0.23.0 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from astunparse->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.37.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from packaging->fastcore>=1.5.[22](https://github.com/ez2rok/recursion-visualizer/runs/8295002783?check_suite_focus=true#step:2:25)->recursion-visualizer==0.0.1) (3.0.9)
Requirement already satisfied: pygments>=2.4.0 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (2.13.0)
Requirement already satisfied: pexpect>4.3 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (4.8.0)
Requirement already satisfied: stack-data in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.5.0)
Requirement already satisfied: backcall in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.2.0)
Requirement already satisfied: matplotlib-inline in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.1.6)
Requirement already satisfied: jedi>=0.16 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.18.1)
Requirement already satisfied: decorator in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (5.1.1)
Requirement already satisfied: pickleshare in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.7.5)
Requirement already satisfied: prompt-toolkit<3.1.0,>3.0.1 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (3.0.31)
Requirement already satisfied: traitlets>=5 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (5.3.0)
Requirement already satisfied: parso<0.9.0,>=0.8.0 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from jedi>=0.16->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.8.3)
Requirement already satisfied: ptyprocess>=0.5 in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from pexpect>4.3->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.7.0)
Requirement already satisfied: wcwidth in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from prompt-toolkit<3.1.0,>3.0.1->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.2.5)
Requirement already satisfied: pure-eval in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from stack-data->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (0.2.2)
Requirement already satisfied: asttokens in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from stack-data->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (2.0.8)
Requirement already satisfied: executing in /opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages (from stack-data->ipython->execnb>=0.1.2->nbdev>=2.2.8->recursion-visualizer==0.0.1) (1.0.0)
Building wheels for collected packages: pygraphviz
  Building wheel for pygraphviz (setup.py): started
  Building wheel for pygraphviz (setup.py): finished with status 'error'
  error: subprocess-exited-with-error
  
  Γ— python setup.py bdist_wheel did not run successfully.
  β”‚ exit code: 1
  ╰─> [55 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.9
      creating build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/testing.py -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/agraph.py -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/scraper.py -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/graphviz.py -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/__init__.py -> build/lib.linux-x86_64-3.9/pygraphviz
      creating build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_edge_attributes.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_node_attributes.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_attribute_defaults.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_close.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_layout.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_graph.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_string.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_html.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_scraper.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_readwrite.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_clear.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_unicode.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_repr_mimebundle.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_drawing.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_subgraph.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/__init__.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      running egg_info
      writing pygraphviz.egg-info/PKG-INFO
      writing dependency_links to pygraphviz.egg-info/dependency_links.txt
      writing top-level names to pygraphviz.egg-info/top_level.txt
      reading manifest file 'pygraphviz.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching '*.png' under directory 'doc'
      warning: no files found matching '*.txt' under directory 'doc'
      warning: no files found matching '*.css' under directory 'doc'
      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'
      adding license file 'LICENSE'
      writing manifest file 'pygraphviz.egg-info/SOURCES.txt'
      copying pygraphviz/graphviz.i -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/graphviz_wrap.c -> build/lib.linux-x86_64-3.9/pygraphviz
      running build_ext
      building 'pygraphviz._graphviz' extension
      creating build/temp.linux-x86_64-3.9
      creating build/temp.linux-x86_64-3.9/pygraphviz
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DSWIG_PYTHON_STRICT_BYTE_CHAR -I/opt/hostedtoolcache/Python/3.9.13/x64/include/python3.9 -c pygraphviz/graphviz_wrap.c -o build/temp.linux-x86_64-3.9/pygraphviz/graphviz_wrap.o
      pygraphviz/graphviz_wrap.c:[271](https://github.com/ez2rok/recursion-visualizer/runs/8295002783?check_suite_focus=true#step:2:282)1:10: fatal error: graphviz/cgraph.h: No such file or directory
       2711 | #include "graphviz/cgraph.h"
            |          ^~~~~~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pygraphviz
  Running setup.py clean for pygraphviz
Failed to build pygraphviz
Installing collected packages: tenacity, pygraphviz, networkx, plotly, recursion-visualizer
  Running setup.py install for pygraphviz: started
  Running setup.py install for pygraphviz: finished with status 'error'
  error: subprocess-exited-with-error
  
  Γ— Running setup.py install for pygraphviz did not run successfully.
  β”‚ exit code: 1
  ╰─> [55 lines of output]
      running install
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.9
      creating build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/testing.py -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/agraph.py -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/scraper.py -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/graphviz.py -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/__init__.py -> build/lib.linux-x86_64-3.9/pygraphviz
      creating build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_edge_attributes.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_node_attributes.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_attribute_defaults.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_close.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_layout.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_graph.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_string.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_html.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_scraper.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_readwrite.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_clear.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_unicode.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_repr_mimebundle.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_drawing.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/test_subgraph.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      copying pygraphviz/tests/__init__.py -> build/lib.linux-x86_64-3.9/pygraphviz/tests
      running egg_info
      writing pygraphviz.egg-info/PKG-INFO
      writing dependency_links to pygraphviz.egg-info/dependency_links.txt
      writing top-level names to pygraphviz.egg-info/top_level.txt
      reading manifest file 'pygraphviz.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching '*.png' under directory 'doc'
      warning: no files found matching '*.txt' under directory 'doc'
      warning: no files found matching '*.css' under directory 'doc'
      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'
      adding license file 'LICENSE'
      writing manifest file 'pygraphviz.egg-info/SOURCES.txt'
      copying pygraphviz/graphviz.i -> build/lib.linux-x86_64-3.9/pygraphviz
      copying pygraphviz/graphviz_wrap.c -> build/lib.linux-x86_64-3.9/pygraphviz
      running build_ext
      building 'pygraphviz._graphviz' extension
      creating build/temp.linux-x86_64-3.9
      creating build/temp.linux-x86_64-3.9/pygraphviz
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DSWIG_PYTHON_STRICT_BYTE_CHAR -I/opt/hostedtoolcache/Python/3.9.13/x64/include/python3.9 -c pygraphviz/graphviz_wrap.c -o build/temp.linux-x86_64-3.9/pygraphviz/graphviz_wrap.o
      pygraphviz/graphviz_wrap.c:2711:10: fatal error: graphviz/cgraph.h: No such file or directory
       2711 | #include "graphviz/cgraph.h"
            |          ^~~~~~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

Γ— Encountered error while trying to install package.
╰─> pygraphviz

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.
Error: Process completed with exit code 1.

Both errors say that the file graphviz/cgraph.h does not exist when trying to create the file settings.py. Yet in my mamba environment I have the file cgraph.h:

It seems that although I have cgraph.h installed in my mamba environment, just putting pygraphviz in requirements doesn’t cause cgraph.h to be installed in my nbdev package.

What I’ve Tried

  1. I tried uninstalling and reinstalling pygraphviz in my mamba environment. This did not change anything.
  2. I made sure I’m actually running my code inrecrsion-visualizer, the environment where pygraphviz is installed.
  3. I tried explicitly including graphviz in requirements of settings.ini. Again, this did not change the error message.
  4. I referenced the instructions for installing pygraphviz here. However, I seem to be following everything that is there.

My Questions

  1. Are there any other packages I could include in the requirements of settings.ini to make this work?
  2. Is the error here due to nbdev or due to the package pygraphviz? It seems to be with nbdev because pygraphviz works 100% fine in my mamba environment but I don’t know for sure?
  3. The Github comments here and here suggest that ways to resolve this issue is by installing graphviz with special commands such as
python setup.py install --include-path=/usr/local/Cellar/graphviz/2.38.0/include --library-path=/usr/local/Cellar/graphviz/2.38.0/lib

and

pip install --global-option=build_ext --global-option="-I/usr/local/Cellar/graphviz/2.38.0/include/"  --global-option="-L/usr/local/Cellar/graphviz/2.38.0/lib/" pygraphviz

respectively. How can I include special installation options in requirements in settings.ini?
5. Is there a way to directly takes the packages in a conda/mamba environment (eg: from an environment.yml file) and place them in the requirements of settings.ini? This kind of feature might be able to resolve my issue and could generally be helpful for future users. I mentioned such a feature in #1008. @michaelaye provided a script that turns a settings.ini into an environment.yml file. However, I am suggesting adding a feature that does the opposite: turn an environment.yml file into a settings.ini file.

The Specs

I’m writing my code in VSCode 1.71.0 with a mamba-forge wrapper around a conda 4.14.0 environment. I’m using python 3.10.6 and nbdev 2.2.8.

Update

I posted this question on github here and Jeremy said:

The error here is due to your GH Actions env not having what it needs to build pygraphviz. Since it's not an nbdev issue, I'll close this issue, but feel free to ask for help on our Discord or forums.

Does anyone know how to modify a Github Actions environment or has encountered a similar issue before? And do you know how to modify the GitHub Actions environment to fix this?

Thanks!

1 Like

If you are missing graphvis header files, my guess would be you need to first install libgraphviz-dev like this answer.

which I found with this search.

Also, in the install instructions you linked, you may need to do something like this…
image

p.s. I like the way you laid out your query, especially the β€œWhat I tried”.
Actually, I see the install instructions linked in item 4 says…

and its not obvious where you installed graphviz-dev.

3 Likes

Thanks so much for your suggestion. I’ll try it out and get back to you.

1 Like

Hey @eturok might be late to the party but you can try updating the github actions to include graphviz installation step before calling fastai CI. Here is what worked for me

name: CI
on:  [workflow_dispatch, pull_request, push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps: 
    - uses: actions/checkout@v3
    - name: Setup Graphviz
      uses: ts-graphviz/setup-graphviz@v1
    - uses: fastai/workflows/nbdev-ci@master