Поскольку я потратил много времени на решение этой проблемы, поэтому сделайте запись для будущего повторного использования.
Содержание
Окружение
- Мао os 12.4
- Macbook air(M1,2020)
- PyCharm 2022.1.4 (Community Edition)
- Версия Runtime: 11.0.15+10-b2043.56 aarch64
- graphviz: стабильная версия 5.0.0
- pygraphviz: 1.9
Проблема
- Проблема возникла после установки
graphviz
.- так как для установки pygraphviz вам необходимо
- Python (версия 3.8, 3.9 или 3.10)
- Graphviz (версия 2.42 или более поздняя)
- компилятор C/C++
- так как для установки pygraphviz вам необходимо
- если вы используете обычную команду
pip install graphviz
для установкиgraphviz
.- затем используйте
pip install pygraphviz
для установкиpygraphviz
- вы столкнетесь с фатальной ошибкой
- затем используйте
fatal error: 'graphviz/cgraph.h' file not found
- файл cgraph.h не может быть найден
- даже вы можете найти этот файл в файле пакета graphviz
Почему возникает эта проблема
- мастер установки pygraphviz не может найти cgraph.h в своем пути поиска по умолчанию.
- Поэтому вам необходимо указать путь поиска при установке pygraphviz.
Решение, которое работает для меня
Шаг 1. Используйте Homebrew для установки пакета graphviz
.
- Установите Homebrew с официального сайта
- Введите следующую команду в терминале Pycharm
brew install graphviz
- установка займет много времени
- затем вы должны найти файл graphviz по следующему пути :(/opt/homebrew/Cellar/graphviz).
Некоторые пояснения
- Homebrew — это своего рода менеджер пакетов для MacOS (или Linux)
- и все пакеты, установленные через Homebrew, хранятся в файле Homebrew, который находится под файлом opt.
- opt-файл — это каталог для установки нераспакованных пакетов.
- Т.е. в данном случае Homebrew поможет вам установить graphviz и предоставит путь поиска для дальнейшей установки pygraphviz.
Шаг 2. Укажите путь поиска при установке pygraphviz
- Введите следующую команду в терминале Pycharm
pip3 install --global-option=build_ext --global-option="-I$(brew --prefix graphviz)/include" --global-option="-L$(brew --prefix graphviz)/lib" pygraphviz
- pip3 — это только для того, чтобы убедиться, что пакет установлен для python 3
- флаги
-I
и-L
указывают компоновщику, где искать необходимые библиотеки Graphviz во время сборки и во время выполнения. - —prefix позволит вам определить, в каком каталоге искать нужные библиотеки.
Кредит
- домашняя страница pygraphviz
- pygraphviz github