Установка pygraphviz на 64-разрядную версию Windows 10, Python 3.6

Я пытаюсь установить pygraphviz в Windows 10. В Интернете есть много решений этой проблемы, но ни одно из них еще не помогло мне. Точная проблема, с которой я столкнулся, связана с этим через ноутбук jupyter →

[1] import networkx as nx
import pylab as plt
from networkx.drawing.nx_agraph import graphviz_layout

[2]G = nx.DiGraph()
G.add_node(1,level=1)
G.add_node(2,level=2)
G.add_node(3,level=2)
G.add_node(4,level=3)

G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(2,4)

nx.draw(G, pos=graphviz_layout(G), node_size=1600, cmap=plt.cm.Blues,
    node_color=range(len(G)),
    prog='dot')
plt.show()

После [2] я получаю следующие ошибки:

ModuleNotFoundError                       Traceback (most recent call last)
C:\Users\name\Anaconda3\lib\site-packages\networkx\drawing\nx_agraph.py 
in 
pygraphviz_layout(G, prog, root, args)
    254     try:
--> 255         import pygraphviz
    256     except ImportError:

ModuleNotFoundError: No module named 'pygraphviz'

а также

ImportError                               Traceback (most recent call last)
<ipython-input-2-86a15892f0f0> in <module>()
  9 G.add_edge(2,4)
 10 
---> 11 nx.draw(G, pos=graphviz_layout(G), node_size=1600, cmap=plt.cm.Blues,
 12         node_color=range(len(G)),
 13         prog='dot')

C:\Users\name\Anaconda3\lib\site-packages\networkx\drawing\nx_agraph.py in graphviz_layout(G, prog, root, args)
226 
227     """
--> 228     return pygraphviz_layout(G,prog=prog,root=root,args=args)
229 
230 def pygraphviz_layout(G,prog='neato',root=None, args=''):

C:\Users\name\Anaconda3\lib\site-packages\networkx\drawing\nx_agraph.py in pygraphviz_layout(G, prog, root, args)
256     except ImportError:
257         raise ImportError('requires pygraphviz ',
--> 258                           'http://pygraphviz.github.io/')
259     if root is not None:
260         args+="-Groot=%s"%root

ImportError: ('requires pygraphviz ', 'http://pygraphviz.github.io/')

Вот что я пытался решить

(1) Обычная установка pip: "pip install pygraphviz" Это ошибка, которую я получаю в конце. ИЗМЕНИТЬ Я получаю ту же ошибку, даже если запускаю cmd от имени администратора.

Command "C:\Users\name\Anaconda3\python.exe -u -c "import setuptools, 
tokenize;__file__='C:\\Users\\name~1\\AppData\\Local\\Temp\\pip-build-
n81lykqs\\pygraphviz\\setup.py';f=getattr(tokenize, 'open', open)
(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, 
__file__, 'exec'))" install --record C:\Users\name~1\AppData\Local\Temp\pip-
b3jz1lk5-record\install-record.txt --single-version-externally-managed --
compile" failed with error code 1 in C:\Users\name~1\AppData\Local\Temp\pip-
build-n81lykqs\pygraphviz\

(2) Скачивание и установка graphviz-2.38.msi, а затем загрузка обеих 64-битных версий колеса. Вот результат.

C:\Users\name\Anaconda3>pip install pygraphviz-1.3.1-cp34-none-
win_amd64.whl
pygraphviz-1.3.1-cp34-none-win_amd64.whl is not a supported wheel on this 
platform.

C:\Users\name\Anaconda3>pip install pygraphviz-1.3.1-cp27-none-
win_amd64.whl
pygraphviz-1.3.1-cp27-none-win_amd64.whl is not a supported wheel on this 
platform.

Что бы я хотел попробовать, но не знаю, как это сделать правильно:

Отредактируйте setup.py. Я много читал о людях, которые находят решения в изменении путей, но я не совсем уверен, как это сделать. Этот способ выглядит очень сложным.

Спасибо за любую помощь / понимание!


person adurbin    schedule 14.07.2017    source источник
comment
@Jason: Какая у вас версия Python?   -  person CristiFati    schedule 19.02.2019
comment
@CristiFati 3.6, обновляюсь с 2.7. У меня на 2.7 есть pygraphviz и он отлично работает.   -  person jason    schedule 19.02.2019
comment
@jason: Но, согласно вашим данным, он ищет pygraphviz-1.3.1-cp34-none-win_amd64.whl. Это почему? Какую команду вы используете для установки pygraphviz?   -  person CristiFati    schedule 19.02.2019
comment
@CristiFati. Pip install pygraphviz у меня не работает и на 2.7, и на 3.6. Мне удалось установить 2.7, загрузив файл cp27 whl. Итак, я ищу файл cp34 для python 3.   -  person jason    schedule 19.02.2019
comment
@jason: А вы тоже используете Anaconda, или простую установку Python, или VEnv?   -  person CristiFati    schedule 19.02.2019
comment
простой Python ... в Windows 10.   -  person jason    schedule 20.02.2019
comment
Думаю, это потому, что я пытаюсь установить 64-битную версию на 3.6, которой не существует.   -  person jason    schedule 22.02.2019


Ответы (4)


Обновлен репо: [GitHub]: CristiFati / Prebuilt-Binaries - (master) Prebuilt-Binaries / PyGraphviz / v1.5:

  • Использование официальных источников Graphviz 2.42.2
  • .whl s (win_amd64, win32) для поддерживаемых в настоящее время версий Python
  • Могут быть добавлены более новые версии (проверьте на один уровень выше)

Для Python 2.7 они уже созданы: [UCI .LFD]: неофициальные двоичные файлы Windows для пакетов расширений Python - PyGraphviz, интерфейс к пакету компоновки и визуализации графа Graphviz..

Примечания:

  • In some (I guess, most of the) cases, a Graphviz installation will be required on the system where PyGraphviz runs on, because PyGraphviz uses some of Graphviz's tools (executables). They can be downloaded, or built (they don't have to match PyGraphviz architecture (32bit, 64bit), as they are invoked).
    Update: I also added Graphviz 2.42.2 build (32bit - as it works on both 64bit and 32bit Win) in the above repository
    • Check it for newer software versions
  • Также была исправлена ​​ошибка (присутствовавшая в предыдущих версиях). Отметьте [SO]: край по умолчанию pygraphviz 1.5 без стрелки? (Ответ @ CristiFati) для получения более подробной информации.

Всем, кто хочет узнать больше о процессе сборки, читайте!



1. Введение

Спустя почти 2 года проблема (ну не совсем так, как в вопросе) все еще сохраняется.

Я хочу начать с того, что подчеркну разницу между двумя пакетами:

В среде Anaconda [SO]: установка PyGraphviz в 64-разрядной версии Windows 10, Python 3.6 (ответ @ TomHanks) работает отлично.

pygraphwiz доступен для загрузки только в виде файла архива (.zip, в данном случае), что означает, что он содержит (C / C ++ ) исходники.

Пару слов о пакетах (.whl), имена которых содержат такие вещи, как cp34-none-win_amd64 (отметьте [SO]: Что означает имя версии 'cp27' или 'cp35 'означает в Python? (ответ @ WayneWerner) для подробностей):

  • They contain binaries (.so or .pyd (.dll)), which are linked against a specific Python library
    • They are meant to work only with that Python version (so 34 is not meant to work with Python 3.6)
    • Даже если кто-то каким-то образом перехитрит pip и ему удастся установить такой пакет (на самом деле это не так уж сложно), он выйдет из строя во время импорта или, что еще хуже, он имеет высокую вероятность сбоя Python

Сейчас многие пакеты содержат предварительно созданные двоичные файлы для наиболее распространенных версий Python, работающих в различных ОС (например, [PyPI]: mysql-connector-python - Загрузить файлы), но многие из них этого не делают, и они содержат только исходные коды. К сожалению, PyGraphviz находится во второй ой категории. В отношении последних pip install будет:

  • Скачать исходники
  • Build the sources locally
    • A C (C++) compiler is required, typically:
      • gcc on Nix
      • VStudio в Win
    • У них могут быть другие зависимости
  • Установите встроенные артефакты (двоичные файлы и файлы .py (c))

В качестве примечания: pip -v ... включает подробный режим для текущей команды, что очень удобно при возникновении ошибок установки.

Вернемся к нашей проблеме: Python 3.6 требует VStudio 2015 ([Python.Wiki]: WindowsCompilers).
Это очень обширная тема, некоторые части я рассмотрел в:

Вы должны проверить их, прежде чем продолжить, и также держать их открытыми, так как они вам обязательно понадобятся на следующих этапах.

У меня установлено VStudio 2015 Community (среди многих других версий), вы тоже должны установить его, это бесплатно ([MS.VStudio]: все еще хотите более старую версию?).

PyGraphviz зависит от [Graphviz]: программного обеспечения для визуализации графиков. Таким образом, во время сборки ему потребуется (части) Graphviz (который также имеет свои собственные зависимости), которые уже будут построены. К сожалению, я не смог найти готовые двоичные файлы (есть [Graphviz]: Пакеты Windows - graphviz-2.38.zip, но это не помогает), поэтому его придется собирать вручную.

Прежде чем идти дальше:

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811]> "e:\Work\Dev\VEnvs\py_064_03.06.08_test0\Scripts\python.exe" -c "import pygraphviz"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'pygraphviz'

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811]> dir /b
other
src

Это мой верхний каталог, все источники загружаются в каталог src, двоичные файлы будут помещены в bin реж.

2. Создайте Graphviz.

Прежде чем начать, я хочу упомянуть, что я сильно полагаюсь на Cygwin (вам не обязательно), а также на некоторые из моих инструментов там установлены, поэтому я буду чередовать терминалы Cygwin и cmd (что может сбивать с толку).

В [Graphviz]: Инструкции по сборке Graphviz для Windows говорится:

Для сборки в Windows:

(версии Graphviz ≥ 2.41)

Сначала в корне репозитория выполните git submodule update --init. Это загрузит все подмодули, которые в основном являются зависимостями для сборки Windows. Затем добавьте каталог windows \ dependencies \ graphviz-build-utilities в ваш PATH (и перезапустите Visual Studio или приглашение, с которым вы выполняете msbuild после этого). Эта папка содержит инструменты Bison, Flex и SED (и будущие дополнения) с тестируемыми версиями. Если все прошло правильно, зависимости настроены, и вы можете собрать Graphviz.

Для начала нам нужно скачать все:

[cfati@cfati-5510-0:/cygdrive/e/Work/Dev/StackOverflow/q045093811/src/graphviz]> ~/sopr.sh
*** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ***

[064bit prompt]> git clone https://gitlab.com/graphviz/graphviz.git .
Cloning into '.'...
remote: Enumerating objects: 71728, done.
remote: Counting objects: 100% (71728/71728), done.
remote: Compressing objects: 100% (19331/19331), done.
remote: Total 71728 (delta 52200), reused 71681 (delta 52157)
Receiving objects: 100% (71728/71728), 163.79 MiB | 480.00 KiB/s, done.
Resolving deltas: 100% (52200/52200), done.
Checking out files: 100% (3870/3870), done.
[064bit prompt]>
[064bit prompt]> git submodule update --init
Submodule 'dependencies/criterion' (https://github.com/Snaipe/Criterion.git) registered for path 'dependencies/criterion'
Submodule 'windows/dependencies/graphviz-build-utilities' (https://github.com/ErwinJanssen/graphviz-build-utilities.git) registered for path 'windows/dependencies/graphviz-build-utilities'
Submodule 'windows/dependencies/libraries' (https://github.com/ErwinJanssen/graphviz-windows-dependencies.git) registered for path 'windows/dependencies/libraries'
Cloning into '/cygdrive/e/Work/Dev/StackOverflow/q045093811/src/graphviz/dependencies/criterion'...
Cloning into '/cygdrive/e/Work/Dev/StackOverflow/q045093811/src/graphviz/windows/dependencies/graphviz-build-utilities'...
Cloning into '/cygdrive/e/Work/Dev/StackOverflow/q045093811/src/graphviz/windows/dependencies/libraries'...
Submodule path 'dependencies/criterion': checked out '301d143ea42c024f22b673b69c72a4cb3c8d151f'
Submodule path 'windows/dependencies/graphviz-build-utilities': checked out '050fff84ce195e0740878748760fd801eeb07b23'
Submodule path 'windows/dependencies/libraries': checked out '141d3a21be904fa8dc2ae3ed01d36684db07a35d'
[064bit prompt]>
[064bit prompt]> git show head
commit 89292b5945933b1501293c04894ed9cf886241be (HEAD -> master, origin/master, origin/HEAD)
Merge: 429d43615 97811bd35
Author: Stephen C North <[email protected]>
Date:   Mon Feb 4 08:09:40 2019 -0500

    Merge branch 'wasbridge/graphviz-master' into HEAD

[064bit prompt]> git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

В итоге вы получите каталог, содержащий ~ 320 МБ материала. Каталог содержит файл graphviz.sln, который представляет собой файл решения VStudio (2015), который содержит 63 проектов. .

Если посмотреть на пакет Anaconda или Python 2.7 pygraphviz (встроенный), он зависит только от cgraph.dll, который, в свою очередь, зависит от cdt.dll, поэтому для нас важны только два проекта. Обратите внимание, что этим двум проектам могут не понадобиться все подмодули git (так что каталог может быть урезан), но я не стал исследовать дальше.

К сожалению, проекты настроены только для 32-разрядной (платформа Win32). 64-битный должен быть добавлен вручную (я сделал это из VStudio IDE, а также описал процесс в одном из моих ответов, на который я ссылался ). После сохранения проекты будут отображаться как измененные git:

[064bit prompt]> git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

        modified:   lib/cdt/cdt.vcxproj
        modified:   lib/cgraph/cgraph.vcxproj
        modified:   windows/dependencies/graphviz-build-utilities (modified content)

no changes added to commit (use "git add" and/or "git commit -a")

Элемент 3 rd связан с тем, что мне нужно было сбросить некоторые разрешения безопасности для 2 исполняемых файлов (используемых при сборке cgraph):

  • bison.exe
  • flex.exe

которые не были установлены должным образом (скорее всего, из-за Cygwin).

Вы можете собрать два проекта из IDE, но я выбрал командную строку ([MS.Docs]: справочник по командной строке MSBuild), поскольку я считаю его более гибким:

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811]> sopr.bat
*** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ***

[prompt]> "c:\Install\x86\Microsoft\Visual Studio Community\2015\vc\vcvarsall.bat" x64

[prompt]> set PATH=%PATH%;%CD%\src\graphviz\windows\dependencies\graphviz-build-utilities

[prompt]> msbuild src\graphviz\lib\cdt\cdt.vcxproj /t:Rebuild /p:Platform=x64;Configuration=Release;SolutionDir=%CD%\src\graphviz\;OutDir=%CD%\bin\Win\dynamic\064\UCRTv140\md\Release\graphviz\ >build_cdt_064.txt 2>&1

[prompt]> echo %errorlevel%
0

[prompt]> dir /b
bin
build_cdt.txt
other
src

[prompt]> msbuild src\graphviz\lib\cgraph\cgraph.vcxproj /t:Rebuild /p:Platform=x64;Configuration=Release;SolutionDir=%CD%\src\graphviz\;OutDir=%CD%\bin\Win\dynamic\064\UCRTv140\md\Release\graphviz\ >build_cgraph_064.txt 2>&1

[prompt]> echo %errorlevel%
0

[prompt]> dir /b "bin\Win\dynamic\064\UCRTv140\md\Release\graphviz"
cdt.dll
cdt.dll.lastcodeanalysissucceeded
cdt.exp
cdt.lib
cgraph.dll
cgraph.dll.lastcodeanalysissucceeded
cgraph.exp
cgraph.lib

Итак, у нас есть все необходимое (2 файла .lib и 2 файла .dll) для продолжения.

3. Создайте PyGraphviz.

Источники PyGraphviz (загружены с [GitHub]: pygraphviz / pygraphviz - (pygraphviz-1.5) pygraphviz-pygraphviz-1.5.zip и) распакованный в src / pygraphviz / pygraphviz-pygraphviz-1.5.

Еще одна корректировка необходима для Graphviz (возможно, это делается как часть другого проекта - на этапе установки): подготовка файлов заголовков:

[prompt]> mkdir include\graphviz

[prompt]> copy src\graphviz\lib\cdt\cdt.h include\graphviz
        1 file(s) copied.

[prompt]> copy src\graphviz\lib\cgraph\cgraph.h include\graphviz
        1 file(s) copied.

К сожалению, PyGraphviz не создает OOTB из-за [GitHub]: pygraphviz / pygraphviz - Поддержка Python 3. Чтобы исправить это, [GitHub]: eendebakpt / pygraphviz для Python2 - Обходной путь для Python2 - обходной путь > Применять надо. Я адаптировал его для работы с текущими источниками (так как он также не работает OOTB: X () только для graphviz_wrap.cpp :

pygraphviz-1.5-all-pyiobase_b85d12ac22d39063f7dbcc396e825c563431e352.patch:

--- pygraphviz/graphviz_wrap.c.orig 2018-09-10 16:07:12.000000000 +0300
+++ pygraphviz/graphviz_wrap.c  2019-02-26 18:05:20.281741400 +0200
@@ -2988,7 +2988,18 @@
 
 
 #if PY_VERSION_HEX >= 0x03000000
-extern PyTypeObject PyIOBase_Type;
+static PyObject *PyIOBase_TypeObj;
+
+static int init_file_emulator(void)
+{
+  PyObject *io = PyImport_ImportModule("_io");
+  if (io == NULL)
+    return -1;
+  PyIOBase_TypeObj = PyObject_GetAttrString(io, "_IOBase");
+  if (PyIOBase_TypeObj == NULL)
+    return -1;
+  return 0;
+}
 #endif
 
 
@@ -3449,7 +3460,7 @@
   {
 #if PY_VERSION_HEX >= 0x03000000 || defined(PYPY_VERSION)
 #if !defined(PYPY_VERSION)
-    if (!PyObject_IsInstance(obj0, (PyObject *)&PyIOBase_Type)) {
+    if (!PyObject_IsInstance(obj0, PyIOBase_TypeObj)) {
       PyErr_SetString(PyExc_TypeError, "not a file handle");
       return NULL;
     }
@@ -3523,7 +3534,7 @@
   {
 #if PY_VERSION_HEX >= 0x03000000 || defined(PYPY_VERSION)
 #if !defined(PYPY_VERSION)
-    if (!PyObject_IsInstance(obj1, (PyObject *)&PyIOBase_Type)) {
+    if (!PyObject_IsInstance(obj1, PyIOBase_TypeObj)) {
       PyErr_SetString(PyExc_TypeError, "not a file handle");
       return NULL;
     }
@@ -6051,6 +6062,12 @@
   
   SWIG_InstallConstants(d,swig_const_table);
   
+#if PY_VERSION_HEX >= 0x03000000
+  if (init_file_emulator() < 0) {
+    return NULL;
+  }
+#endif
+
   PyDict_SetItemString(md,(char*)"cvar", SWIG_globals());
   SWIG_addvarlink(SWIG_globals(),(char*)"Agdirected",Swig_var_Agdirected_get, Swig_var_Agdirected_set);
   SWIG_addvarlink(SWIG_globals(),(char*)"Agstrictdirected",Swig_var_Agstrictdirected_get, Swig_var_Agstrictdirected_set);

Это diff (patch). См. [ SO]: запускать / отлаживать UnitTests приложения Django из контекстного меню, щелкнув правой кнопкой мыши в PyCharm Community Edition? (Ответ @CristiFati) (раздел Установка исправлений utrunner) о том, как применять исправления к Win (в основном, каждая строка, начинающаяся с вводится один знак +, и каждая строка, начинающаяся со знака -, гаснет).

[prompt]> :: Restore the original prompt as cwd is important
[prompt]> exit

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811]> set _TOP_DIR=%CD%

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811]> pushd src\pygraphviz\pygraphviz-pygraphviz-1.5

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811\src\pygraphviz\pygraphviz-pygraphviz-1.5]> pushd pygraphviz && "c:\Install\x64\Cygwin\Cygwin\AllVers\bin\patch.exe" -p 1 -buNi ..\pygraphviz-1.5-all-pyiobase_b85d12ac22d39063f7dbcc396e825c563431e352.patch && popd
patching file graphviz_wrap.c

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811\src\pygraphviz\pygraphviz-pygraphviz-1.5]> echo %errorlevel%
0

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811\src\pygraphviz\pygraphviz-pygraphviz-1.5]> "e:\Work\Dev\VEnvs\py_064_03.06.08_test0\Scripts\python.exe" setup.py install --include-path=%_TOP_DIR%\include --library-path=%_TOP_DIR%\bin\Win\dynamic\064\UCRTv140\md\Release\graphviz >%_TOP_DIR%\install_pygraphviz_064.txt 2>&1

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811\src\pygraphviz\pygraphviz-pygraphviz-1.5]> echo %errorlevel%
0

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811\src\pygraphviz\pygraphviz-pygraphviz-1.5]> popd

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811]> set PATH=%PATH%;%CD%\bin\Win\dynamic\064\UCRTv140\md\Release\graphviz

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q045093811]> "e:\Work\Dev\VEnvs\py_064_03.06.08_test0\Scripts\python.exe" -c "import pygraphviz;print(dir(pygraphviz), \"\n\", pygraphviz.graphviz._graphviz)"
['AGraph', 'Attribute', 'DotError', 'Edge', 'ItemAttribute', 'Node', '__all__', '__author__', '__builtins__', '__cached__', '__date__', '__doc__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__revision__', '__spec__', '__version__', 'absolute_import', 'agraph', 'division', 'graphviz', 'print_function', 'release', 'test', 'tests', 'version']
 <module '_graphviz' (e:\Work\Dev\VEnvs\py_064_03.06.08_test0\lib\site-packages\pygraphviz\_graphviz.cp36-win_amd64.pyd)>

Как видно, модуль успешно импортирован.

В качестве примечания, 2 зависимости .dll (из предыдущего раздела) должны быть доступны при импорте модуля, поэтому их каталог добавляется в % PATH%.
Конечно, это всего лишь (неудачный) обходной путь (gainarie), это не должно происходить каждый раз, когда нужно работать с пакетом.

Я не знаю (пока), как указать setup.py также скопировать их в каталог сборки / установки пакета, поэтому в качестве альтернативы (также обходной путь) нужно вручную скопировать их в pygraphviz install dir (рядом с _graphviz.cp36-win_amd64.pyd, который (в моем случае): e: \ Work \ Dev \ VEnvs \ py_064_03.06.08_test0 \ lib \ site-packages \ pygraphviz).

4. Ярлык

Поскольку весь процесс сложен и требует большого количества ручных вмешательств и взломов, мне удалось создать (с небольшими изменениями setup.py) пакет (wheel).

Я не знаю простого способа сделать его общедоступным, поэтому (хотя я знаю, что это плохая практика) я загрузил его по адресу [GitHub]: CristiFati / Prebuilt-Binaries - (master) Prebuilt-Binaries / Py1Graphviz / v .5 / pygraphviz-1.5-cp36-cp36m-win_amd64.whl.
Вы можете скачать, а затем установить (это один из способов):

"C:\Path\to\Python-3.6-amd64\pip" install "C:\Path\to\downloaded\pygraphviz-1.5-cp36-cp36m-win_amd64.whl"

Примечание. Он также работает в средах Anaconda!

person CristiFati    schedule 26.02.2019
comment
Привет, Кристи, можешь взглянуть на этот вопрос? Это связано с вашим колесом. stackoverflow.com/questions/55196206 / - person jason; 16.03.2019
comment
@jason: Обратите внимание, я только построил его, но никогда не использовал (для работы с графиками), но я посмотрю. - person CristiFati; 16.03.2019
comment
да, это странно, потому что это так просто. Я посмотрел на pygraphviz github и не увидел, чтобы кто-то жаловался, так что я предполагаю, что это как-то колесо. - person jason; 16.03.2019

Похоже, что большинство проголосовавших за установку graphviz, а не pygraphviz.

Если вы используете среду conda, вы можете попробовать использовать этот канал:

conda install graphviz pygraphviz -c alubbock

Пробовал с networkx 2.1, все нормально работало.

person Tom Hanks    schedule 04.11.2018
comment
Для меня это вызвало следующую ошибку ImportError: ('requires pygraphviz ', 'http://pygraphviz.github.io/') - person Talha Junaid; 21.11.2018
comment
@TomHanks: Хороший улов! Проверьте мой ответ, чтобы получить более общее решение. - person CristiFati; 24.08.2019

Вот что у меня сработало:

Выиграть 7 AMD64

  • Установите компилятор MSFT C ++.
  • Установите Anaconda для Win AMD64, Python3.
  • Установите graphviz для Win.
  • Добавьте C:\Program Files (x86)\Graphviz2.38\bin в переменную среды PATH.
  • Загрузите pygraphviz-1.3.1-cp34-none-win_amd64.whl .
  • Создайте среду Conda с Python версии 3.4: conda create --name digraphs python=3.4 anaconda.
  • Введите среду: activate digraphs.
  • Установите pygraphviz с помощью pip: pip install pygraphviz-1.3.1-cp34-none-win_amd64.whl.
  • Пример выполнения: python ./gviz_simple.py.
  • Выйти из среды: deactivate

Я написал кое-что об этом на github. Это беспорядочно, используйте на свой страх и риск: https://github.com/darkhipo/Easy-Digraph-Draw

person Community    schedule 28.07.2017
comment
Интересно, почему это было отвергнуто, в отличие от @ dot-nix (чего не было, хотя должно). - person CristiFati; 24.08.2019

Решил это на 64-битной Windows 10 и Python 3.6.

Шаги:

  1. Загрузите Graphviz для Windows с сайта graphiviz.

  2. Добавьте путь к корзине Graphviz C:\Program Files (x86)\Graphviz2.38\bin в путь к Windows.

  3. Закройте и снова откройте терминалы, чтобы путь был распознан.

  4. Загрузите колесо graphviz python 3.6.

  5. Установите колесо графвиза.

    pip install graphviz-0.8.3-py2.py3-none-any.whl

  6. Выполнено!

person dot-nix    schedule 13.05.2018
comment
Думаю, вы с Адурбином спрашиваете / отвечаете о разных пакетах. Случай двух одноименных библиотек; pygraphviz, кажется, является тем, о котором идет речь, в то время как ваше решение обращается к пакету graphviz и, как таковое, не имеет отношения к этому вопросу. См .: stackoverflow.com/questions/37353199/graphviz-vs-pygraphviz - person Librarian; 20.06.2018
comment
Это НЕПРАВИЛЬНЫЙ ответ (начиная с шага №4.). -1. Его следует удалить совсем. - person CristiFati; 12.04.2019