Этот вопрос старый, но я столкнулся с той же проблемой, и после того, как спустился по кроличьей норе ... слишком долго ... У меня есть ответ, который сработал для меня.
Во-первых, вы должны получитьоболочка python metis с использованием pip: pip install metis
.
Во-вторых, Вы должны установить conda-metis , которую вы можете найти здесь .Хотя pip вызывает metis-оболочку metis python, она является просто оболочкой metis и не имеет самой metis.
Поместите файлы в conda-metis-master по какому-нибудь пути к файлу.
Установка требует некоторых исправлений.Убедитесь, что у вас последняя версия Visual Studios (я использовал 2017).Для меня VS была проблема с выполнением инструкций в файле BUILD-WINDOWS.txt, который привел меня к этой теме:
Почему вместо MSBuild выглядит C: \ для Microsoft.Cpp.Default.propsиз c: \ Program Files (x86) \ MSBuild?(ошибка MSB4019)
В частности, ответ Для Visual Studio 2017 и 2019 в Windows 10 был тем, с чем я пошел.Запустите:
set VCTargetPaths=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets
в командной строке с полными разрешениями для установки переменной среды.
Также перейдите к Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\
в regedit и измените 4.0
переменную MSBuildOverrideTasksPath
и ToolsVersion\4.0\
переменную MSBuildToolPath
на C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
.
Для метисов python нам нужна .dll
, а не .lib
[1], поэтому мы также должны посмотреть на CMakeLists.txt
(см. Версию Linux для обсуждения здесь ).Мы добавляем в строку 19: set(METIS_LIBRARY_TYPE SHARED)
.
Вы должны следовать инструкциям BUILD-WINDOWS.txt, но запускать .\vsgen -G "Visual Studio 15 2017 Win64"
внутри пути к файлу conda-metis в командной строке с полными разрешениями вместо использования Visual Studio10.
Подождите!Нам нужно еще одно исправление, прежде чем следовать инструкциям по использованию VS для сборки библиотеки.Следуя тому, что было сказано в:
rint () проблема после создания VS Project с использованием CMake
, мы должны отредактировать файл path_to_your_metis_dir\GKlib\gk_arch.h
, удалив строку: #define rint(x) ((idx_t)((x)+0.5))
.(Или исправление, указанное в этом обмене github .)
Затем перейдите к path_to_your_metis_dir\build\windows\
.
Откройте METIS.sln
в Visual Studios, перейдите наверх к Build
и от прокрутки к Build Solution
.После этого файл .dll
будет находиться в path_to_your_metis_dir\build\windows\libmetis\Release\
.
Наконец, мы запустим в командной строке: set METIS_DLL=path_to_your_metis_dir\build\windows\libmetis\Release\metis.dll
После этого метис python больше не завершится ошибкой на шаге from metis import *
для меня.
[1] Если бы мы могли использовать .lib
, тогда conda install -c conda-forge metis
сработал бы для получения этого файла, но установка METIS_DLL
в файл .lib
приводит к ошибке Windows.