Windows配置Metis

Metis安装

本人系统环境为Windows11 21H2

1.安装前需要准备的软件

Conda-Metis:https://github.com/menpo/conda-metis
VS2019:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
不推荐使用VS2022,本人一开始使用VS2022无法完成cmake项目编译,由于个人水平有限,暂时原因不明

2.安装步骤

(1)修改注册表

Window+R打开运行,输入regedit,打开注册表,找到\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\路径
1>修改该路径下.\4.0\中的数值数据(MSBuildOverrideTasksPath)为C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
2>修改该路径下.\ToolVersion\4.0\中的数值数据(MSBuildToolsPath)为C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin

(2)修改CMakeList.txt

编辑刚刚解压的文件,在根目录下conda-metis-master/CMakeLists.txt,在第19行加入
set(METIS_LIBRARY_TYPE SHARED)

(3)修改metis.h

打开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))

(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环境变量

在命令行窗口运行下列代码,这里换回你conda-metis-master的路径前缀。
setx METIS_DLL <‘your path’>\conda-metis-master\build\windows\libmetis\Release\metis.dll
如果发现路径配置不生效,可以考虑把生成的metis.dll文件放入C:\Windows\System32目录下

(9)安装metis python warpper

在命令行窗口输入pip install metis
如果上述步骤都能运行,那应该可以在python里正常引用metis包了

(10)修改metis.py line131为:

IDXTYPEWIDTH = os.getenv(‘METIS_IDXTYPEWIDTH’, ‘64’)
metis.py位于…\Anaconda3\envs<envs name>\Lib\site-packages\metis.py

3.运行时可能出现的问题

本项目在Python下使用Metis初衷是为了运行GitHub项目Cluster-GCN:https://github.com/benedekrozemberczki/ClusterGCN
顺手在这里分享一下运行项目可能遇到的问题:

(1)METIS_MemoryError

Memory allocation failed for SetupGraph: adjwgt. Requested size: 15692049316224 bytes
Traceback (most recent call last):File "D:\Coding\Projects\Python\cluster_gcn\ClusterGCN\src\main.py", line 24, in <module>main()File "D:\Coding\Projects\Python\cluster_gcn\ClusterGCN\src\main.py", line 18, in mainclustering_machine.decompose()File "D:\Coding\Projects\Python\cluster_gcn\ClusterGCN\src\clustering.py", line 38, in decomposeself.metis_clustering()File "D:\Coding\Projects\Python\cluster_gcn\ClusterGCN\src\clustering.py", line 56, in metis_clustering(st, parts) = metis.part_graph(self.graph, self.args.cluster_number)File "D:\Coding\Anaconda3\envs\python39\lib\site-packages\metis.py", line 800, in part_graph_METIS_PartGraphKway(*args)File "D:\Coding\Anaconda3\envs\python39\lib\site-packages\metis.py", line 676, in _METIS_PartGraphKwayreturn _METIS_PartGraphKway.call(nvtxs, ncon, xadj, adjncy, vwgt, vsize,File "D:\Coding\Anaconda3\envs\python39\lib\site-packages\metis.py", line 501, in _result_errcheckif result == METIS_ERROR_MEMORY: raise METIS_MemoryError
metis.METIS_MemoryError

(2)OSError: exception: access violation reading

Traceback (most recent call last):File "D:\Coding\Projects\Python\cluster_gcn\ClusterGCN\src\main.py", line 24, in <module>main()File "D:\Coding\Projects\Python\cluster_gcn\ClusterGCN\src\main.py", line 18, in mainclustering_machine.decompose()File "D:\Coding\Projects\Python\cluster_gcn\ClusterGCN\src\clustering.py", line 38, in decomposeself.metis_clustering()File "D:\Coding\Projects\Python\cluster_gcn\ClusterGCN\src\clustering.py", line 56, in metis_clustering(st, parts) = metis.part_graph(self.graph, self.args.cluster_number)File "D:\Coding\Anaconda3\envs\python39\lib\site-packages\metis.py", line 800, in part_graph_METIS_PartGraphKway(*args)File "D:\Coding\Anaconda3\envs\python39\lib\site-packages\metis.py", line 676, in _METIS_PartGraphKwayreturn _METIS_PartGraphKway.call(nvtxs, ncon, xadj, adjncy, vwgt, vsize,
OSError: exception: access violation reading 0x0000026D0AC820C0

以上两问题请注意步骤(3)、(8)、(10)是否成功完成

Windows/Linux配置PyMetis(Metis for Python)

conda install -c conda-forge pymetis
pip install metis

本人并未尝试此方法安装的PyMetis在Windows能否使用

Windows/Linux在Python下使用Metis相关推荐

  1. linux根目录数量限制,windows,linux文件夹下文件上限最大个数

    1.FAT16文件系统, 可以保存的文件体积最大值是 4 GB - 1 byte (2^32 bytes - 1 byte): 卷的最大体积是4GB:每个卷上最多可以保存的文件数量是65,536个 ( ...

  2. windows 安装metis_如何在windows上安装python中的METIS包?

    这个问题是老问题,但我也遇到了同样的问题,在为..太久了...我有一个对我有用的答案.在 首先,应该使用pip:pip install metis获得python metis包装器.在 其次,您必须安 ...

  3. Windows/Linux 命令行下英汉互译软件

    一.dict 1.安装好 python 环境(windows 用户执行 python.exe 安装程序即可) sudo pip install dict-cli 2.安装 pip 工具(windows ...

  4. Windows 系统中 Python下 Pygame 的安装

    Pygame是跨平台Python模块,专为电子游戏设计,可用于管理图形.动画乃至声音,建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚,通过使用Pygame来处理在 ...

  5. linuxpip安装python包_Windows+Linux安装Python包管理工具pip

    Windows+Linux安装Python包管理工具pip Windows安装Python包管理工具pip pip是一个Python包管理工具,主要是用于安装PyPI上的软件包,可以替代easy_in ...

  6. python三个箭头怎么打出来_(Python3)Linux和Windows箭头键按下

    我一直在寻找一段时间,现在遍布互联网,但我似乎找不到一个独特的方式为Linux和Windows,允许捕捉箭头上下,等事件.(Python3)Linux和Windows箭头键按下 随着msvcrt包在W ...

  7. python虚拟环境 windows环境搭建_windows 下搭建python虚拟环境(示例代码)

    ################################### windows 下测试环境 C:\Users\wongg\django-cmdb>cd ..\cmdb ##下载get-p ...

  8. 分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view

    分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view ...

  9. Linux/Windows/MacOS各个操作系统下推荐应用集合

    Linux/Windows/MacOS各个操作系统下推荐应用集合 作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上搜集各种软件的蒟蒻- 作为一 ...

最新文章

  1. c++ primer,友元函数上的一个例子(By Sybase)
  2. 由PostgreSQL的区域与字符集说起
  3. 产品经理挑战赛,你敢来吗?
  4. 消除游戏美术设计的这些套路,你都知道吗?
  5. C# 调用动态链接库读取二代身份证信息
  6. flyway版本号_Flyway版本化管理数据库脚本
  7. 记住:永远不要在MySQL中使用UTF-8
  8. WebStorm 是什么软件
  9. iOS学习笔记(1)— UIView 渲染和内容管理
  10. 基于Java的外卖订餐平台
  11. svn 中文语言包的安装
  12. 通俗易懂的随机森林模型讲解
  13. linux安装文泉驿字体,centos 安装文泉驿字体教程,centos文泉驿字体下载字体(URL:h...
  14. 数据结构试卷错题详细分析
  15. springboot-2-整合myBatis及druid连接池
  16. 为什么要使用dubbo
  17. python能制作ppt动画效果吗_原来用PPT也能做出神级的动画效果!
  18. 1Tb 硬盘重做系统无法启动修复
  19. 2022-2027年中国石榴石行业发展前景及投资战略咨询报告
  20. C++jump game跳跃游戏的算法(附完整源码)

热门文章

  1. DSP_TMS320F28377D_ADC学习笔记
  2. STM32 PC13 PC14 PC15用作普通IO口
  3. 经验模态分解python_信号处理 - 经验模态分解 【1】
  4. 【读书笔记】Java并发编程的艺术
  5. Lua学习第二课_初探lua和lua语法
  6. html中一些标签怎么打印,html2ps - 如何打印小标签?
  7. Oracle索引简介
  8. 中国最好的职业TOP10
  9. OsgEarth加载DEM(数字高程模型)
  10. namedtuple使用