目录
此文章仅用于分享如何安装,参考了两位大佬的知乎,知乎:pofatoezil,dongZheX,本文也主要是模仿pofatoezil的知乎写法以及顺序,只是在自己稍微总结了一下,并且在最后一步使用了不同的方法(原方法每次import metis前都要定义一次METIS_DLL)。
1、需要准备的软件(文件夹)
从Metis的官网下载Metis,并且下载压缩包,conda-metis,VS2019,下载完成后将Metis和conda-metis的文件分别解压,得到文件夹
2、安装步骤
1、修改注册表
在window搜索里输入regedit,打开注册表,找到\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\路径
(1)修改该路径下.\4.0\中的数值数据为C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\15.0\Bin
(2)修改该路径下.\ToolVersion\4.0\中的数值数据为C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\15.0\Bin
2、修改CMakeList.txt
在一开始的时候,我还没看到pofatoezil的回答,我生成的是.lib文件,后面发现python 需要的是.dll文件。
编辑刚刚解压的文件conda-metis-master
conda-metis-master/CMakeLists.txt,在第19行加入
set(METIS_LIBRARY_TYPE SHARED)
3、修改metis.h(option)
打开conda-metis-master\include\metis.h,将 #define IDXTYPEWIDTH 32 该为
#define IDXTYPEWIDTH 64
4、确定Cmake与VS是否匹配
在conda-metis-master文件夹里进入命令行(cmd)输入下列指令
cmake--help
如果能正确运行,应该就能看到一大堆东西,其中就有"Visual Studio 16 2019"等等
5、在刚刚的命令行窗口里面继续运行
.\vsgen -G "Visual Studio 16 2019" -A x64
在运行此代码后,在conda-metis-master\build\windows\下应该会出现很多的文件,如METIS.sln
6、修改gk_arch.h
找到文件conda-metis-master\GKlib\gk_arch.h,编辑
找到 #define rint(x) ((idx_t)((x)+0.5)),在前面加两条//,效果如下
//#define rint(x) ((idx_t)((x)+0.5))
7、生成metis.dll文件
使用VS打开conda-metis-master\build\windows\METIS.sln文件,选择Release和x64,然后点击生成(B),再点击生成解决方案(B)
这一步运行有可能会报错,不过报错也没关系,可以看看文件夹\conda-metis-master\build\windows\libmetis\Release是否有metis.dll文件,如果有就可以了。
8、设定METIS_DLL环境变量
在命令行窗口运行下列代码,your path这里记得换回你conda-metis-master的路径前缀。
setx METIS_DLL <'your path'>\conda-metis-master\build\windows\libmetis\Release\metis.dll
此代码不同于两位大神的做法,运行上述代码后,就不用每次导metis包的时候都要定义一次METIS_DLL
9、安装metis python warpper
在命令行窗口输入下列代码
pip install metis
如果上述步骤都能运行,那应该可以在python里正常引用metis包了。
[1] Metis 5.1.0 安裝心得 in Win10 - 知乎
[3]GitHub - menpo/conda-metis: Builds metis 5.1.0 using conda