繁体   English   中英

如何在 Windows 上的 python 中安装 METIS 包?

[英]How to install METIS package in python on windows?

我目前正在使用 METIS 的 python 中运行源代码。 我想使用 Jetbrains PyCharm、conda 解释器来运行它,这些都安装在 Windows 10 上。虽然我已经使用 conda 安装了 METIS,但我无法启用共享库,并且遇到了这个错误:

ModuleNotFoundError:没有名为“metis”的模块

当我尝试在没有 conda 的情况下运行它时,尽管我已将 metis.dll 位置添加到环境变量中,但我遇到了以下错误。

RuntimeError: 无法加载 METIS dll

有人可以帮我吗?

这个问题很老,但是我遇到了同样的问题,并且在进入兔子洞之后……太久了……我有一个对我有用的答案。

首先,您应该使用 pip 获取 python metis 包装器: pip install metis

其次,您必须安装 conda-metis ,您可以在此处找到。 虽然 pip 调用 metis python 包装器 metis,但它只是 metis 包装器,本身没有 metis。

将文件放在 conda-metis-master 的某个文件路径中。

安装需要一些修复。 确保您拥有最新版本的 Visual Studios(我使用的是 2017)。 对我来说,VS 在运行 BUILD-WINDOWS.txt 中的指令时遇到了问题,这让我进入了这个线程:

为什么 MSBuild 在 C:\ 中查找 Microsoft.Cpp.Default.props 而不是 c:\Program Files (x86)\MSBuild? (错误 MSB4019)

具体来说, Windows 10 上的 Visual Studio 2017 和 2019的答案就是我所采用的。 跑:

set VCTargetPaths=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets

在具有完全权限的命令提示符下设置环境变量。

还可以在 regedit 中转到Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\并在4.0中将变量MSBuildOverrideTasksPath和在ToolsVersion\4.0\中的变量MSBuildToolPathC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

对于 python metis,我们需要一个.dll ,而不是.lib [1],因此我们还必须仔细查看CMakeLists.txt (请参阅此处讨论的 Linux 版本)。 我们在第 19 行添加: set(METIS_LIBRARY_TYPE SHARED)

您应该遵循 BUILD-WINDOWS.txt 说明,但在命令提示符下的 conda-metis 文件路径中运行.\vsgen -G "Visual Studio 15 2017 Win64"并使用完全权限,而不是使用 Visual Studio 10。

等待! 在按照进一步使用 VS 构建库的说明之前,我们需要另一个修复。 按照中所说的:

使用 CMake 创建 VS 项目后的 rint() 问题

我们必须通过删除以下行来编辑文件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\

在 Visual Studios 中打开METIS.sln ,转到顶部以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 metis 对我来说不再在from metis import *的步骤上失败。

[1] 如果我们可以使用.lib ,那么conda install -c conda-forge metis可以获取该文件,但是将METIS_DLL设置为.lib文件会导致 windows 错误。

在得到@XiaojianChen描述的错误后,我就是这样解决的(VS Studio 2022)。 继续上述修复,打开VS解决方案文件后生成.dll文件,进入解决方案资源管理器,右键单击metis项目文件->属性。

在常规属性中,将配置类型更改为动态库 (.dll)

常规属性窗口的屏幕截图

在高级属性下,将目标文件扩展名从 .lib 更改为 .dll

高级属性窗口的屏幕截图

由于我们只需要metis.dll文件,在Solution Explorer中右键metis项目文件,点击build。 .dll 可以在 ..\build\windows\libmetis\Release 中找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM