Установка PygraphViz на Windows, Python 2.6
Кто-нибудь там успешно установил PygraphViz на Windows?
Поскольку официального релиза для Windows не существует, я пытаюсь собрать его сам, но он не компилируется. Я не первый, кто сталкивается с этой проблемой, но я не мог найти ответ.
Это вывод консоли:
C:\Python26\Lib\site-packages\pygraphviz-0.99.1>c:\python26\python.exe setup.py
install
library_path=C:/Program Files/Graphviz2.26.3/lib/debug/dll
include_path=C:/Program Files/Graphviz2.26.3/include/graphviz
running install
running build
running build_py
running build_ext
building 'pygraphviz._graphviz' extension
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W
3 /GS- /DNDEBUG "-IC:/Program Files/Graphviz2.26.3/include/graphviz" -Ic:\python
26\include -Ic:\python26\PC /Tcpygraphviz/graphviz_wrap.c /Fobuild\temp.win32-2.
6\Release\pygraphviz/graphviz_wrap.obj
graphviz_wrap.c
warning: I don't know what to do with 'runtime_library_dirs': ['C:/Program Files
/Graphviz2.26.3/lib/debug/dll']
error: don't know how to set runtime library search path for MSVC++
Любая помощь будет оценена!
8 ответов
Вот что сработало для меня в Python 2.7. Я предполагаю, что это должно работать аналогично в Python 2.6. Условие: установить mingw32 (входит в дистрибутив pythonxy, если вы его используете), Graphviz
1) Скачать источники Pygraphviz
2) Отредактируйте файл setup.py, чтобы изменить путь к чему-то похожему
library_path=r"c:\Program Files (x86)\Graphviz 2.28\bin"
include_path=r"c:\Program Files (x86)\Graphviz 2.28\include\graphviz"
Обратите внимание, что это \ bin, а не \ lib. Связь с библиотеками не работала для меня.
3) бегать python setup.py build -c mingw32
Результат шага 3:
c:\Python27\Lib\site-packages\pygraphviz-1.1>python setup.py build -c mingw32
library_path=c:\Program Files (x86)\Graphviz 2.28\bin
include_path=c:\Program Files (x86)\Graphviz 2.28\include\graphviz
running build
running build_py
running build_ext
building 'pygraphviz._graphviz' extension
C:\MinGW32-xy\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-Ic:\Program Files (x86)\G
raphviz 2.28\include\graphviz" -Ic:\Python27\include -Ic:\Python27\PC -c pygraph
viz/graphviz_wrap.c -o build\temp.win32-2.7\Release\pygraphviz\graphviz_wrap.o
pygraphviz/graphviz_wrap.c: In function 'agattr_label':
pygraphviz/graphviz_wrap.c:2855:5: warning: return makes integer from pointer wi
thout a cast
writing build\temp.win32-2.7\Release\pygraphviz\_graphviz.def
C:\MinGW32-xy\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.7\Release\py
graphviz\graphviz_wrap.o build\temp.win32-2.7\Release\pygraphviz\_graphviz.def "
-Lc:\Program Files (x86)\Graphviz 2.28\bin" -Lc:\Python27\libs -Lc:\Python27\PCb
uild "-Wl,-Rc:\Program Files (x86)\Graphviz 2.28\bin" -lcgraph -lcdt -lpython27
-lmsvcr90 -o build\lib.win32-2.7\pygraphviz\_graphviz.pyd
4) скопируйте результат из только что созданного lib.win32-2.7 (одна подпапка называется pygraphviz
) в папку с пакетами сайта вашего Python
Наслаждайтесь!
Я ценю, что это может быть устаревшим потоком к настоящему моменту, но чтобы обновить его для других, в настоящее время поражающих эту стену, установщик неофициальных бинарных файлов Windows для пакетов расширения Python Кристофа Гольке только что работал для меня..
Я только что столкнулся с той же самой проблемой сегодня. Это не очень хороший ответ, но я прочитал в их FAQ:
Q:
Как мне скомпилировать pygraphviz под Windows? И почему вы не распространяете установщик pygraphviz для Windows?
A:
У нас нет машин для разработки Windows, но мы бы хотели, чтобы pygraphviz работал на всех платформах. Если вы успешно используете Windows или хотите помочь протестировать и распространить установщик Windows, напишите нам.
См. Также билет 67: https://networkx.lanl.gov/ticket/67
Это, вместе с многочисленными безответными просьбами о помощи на различных форумах, в списках рассылки и новостных группах, заставляет меня поверить, что запуск PyGraphviz в Windows - это не то, что можно сделать просто сегодня.
Поэтому я сделал следующую очевидную вещь (*) и запустил Ubuntu поверх VirtualBox для создания графов Graphviz с Python. Любопытно, что он также не может быть установлен из исходного кода в Ubuntu, если только сам Graphviz не установлен из исходного кода, но его можно установить из готового пакета с sudo apt-get python-pygraphviz
,
Так что теперь я счастливый пользователь pygraphviz. Или, по крайней мере, на 90% счастливы. PGV показывает os.popen3
предупреждение об устаревании на Python 2.6 и 18-месячный билет с патчем по этому вопросу до сих пор не включены. Argh!
(*) Я делаю это все чаще и чаще в последнее время...
Если вы удалите параметр 'runtime_library_dirs' из словаря расширений в строке 147 в setup.py, ваше сообщение об ошибке исчезнет. Тем не менее, он не может найти cgraph.lib. Если вы измените свои настройки на
library_path=r'C:\Program Files\Graphviz2.26.3\lib\debug\lib'
все соответствует и устанавливает. Вы можете импортировать модули, но в тот момент, когда вы пытаетесь получить доступ к чему-либо, он выходит из строя. Если посмотреть на источник для GraphViz, то выясняется, что версия для Windows - C#/.NET - возможно, в этом источник наших проблем?
Шляпа та же проблема, и я, наконец, получил его на работу! Проблема была на самом деле в Python msvc9compiler.py (да, вам нужен VS8 vc9 для компиляции тоже). Ошибка появляется в строке 698 в функции runtime_library_dir_option(). Вместо того, чтобы выдавать ошибку, пусть она возвращает ту же строку, что и library_dir_option():
def runtime_library_dir_option(self, dir):
return "/LIBPATH:" + dir
Затем скомпилируйте и все должно работать.
Вы также можете попробовать использовать easy_install
и избегайте компиляции. Я установил "раздачу", форк easy_install. Но для этого также требуется pkg-config, и вам нужно либо скомпилировать его, либо получить более старую версию. Кроме того, вы также должны добавить pkg-config в путь приложения.
Это работает для меня, Python 2.7 32 бит, PyGraphViz 2.38, VCForPython27, Windows 10 64 бит.
Сначала установите VCForPython27, см. Http://aka.ms/vcpython27.
Затем выполните следующую команду, чтобы distutils.msvc9compiler
можно найти компилятор VC. (Для этого нужны права администратора. А если у вас 32-битная Windows, вам нужно настроить раздел реестра.)
reg add HKLM\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\9.0\Setup\VC -v productdir -t REG_SZ -d "%LocalAppData%\Programs\Common\Microsoft\Visual C++ for Python\9.0" -f
Наконец, установите PyGraphViz.
set INCLUDE=C:\Program Files (x86)\Graphviz2.38\include
set LIB=C:\Program Files (x86)\Graphviz2.38\lib\release\lib
pip install pygraphviz
Мне удалось скомпилировать pygraphviz под Windows со следующей настройкой:
Windows 7, WinPython-32bit-2.7.6.3, Graphviz2.38, Microsoft Visual C++ 2008 Express Edition, Pygraphvize 1,3 Dev
в setup.py изменили строки 35 и 36 на:
include_dirs = r "C: \ Program Files \ Graphviz2.38 \ include" library_dirs = r "C: \ Program Files \ Graphviz2.38 \ lib \ release \ lib"
Компиляция работает, и вы получаете работающий Python-модуль Python.
Надеется, что это помогает.