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

标签 python window shared-libraries metis

我目前正在使用 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 ,您可以找到 here .虽然 pip 调用 metis python 包装器 metis,但它只是 metis 包装器,本身没有 metis。

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

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

Why does MSBuild look in C:\ for Microsoft.Cpp.Default.props instead of c:\Program Files (x86)\MSBuild? ( error MSB4019)

具体来说,答案对于 Windows 10 上的 Visual Studio 2017 和 2019 是我一起去的。跑:
set VCTargetPaths=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets
在具有完全权限的命令提示符下设置环境变量。

也去Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\在注册和更改 4.0变量 MSBuildOverrideTasksPathToolsVersion\4.0\变量 MSBuildToolPathC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin .

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

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

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

rint() issue after creating VS Project using CMake

我们必须编辑文件path_to_your_metis_dir\GKlib\gk_arch.h通过删除行:#define rint(x) ((idx_t)((x)+0.5)) . (或 this github exchange 上列出的修复程序。)

那就去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 metis 在步骤 from metis import * 上不再失败。为了我。

[1] 如果我们可以使用 .lib ,然后 conda install -c conda-forge metis可以得到这个文件,但是设置 METIS_DLL.lib文件导致 Windows 错误。

关于python - 如何在 Windows 上的 python 中安装 METIS 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50675790/

相关文章:

将值循环到变量中的 Pythonic 方式

python - 字谜Python 3

command-line - 解析 Windows 命令行输出以获取 PID

linux - dlopen/dlclose 与几个 so,在 dlopen 上被阻止

c - Golang C (.so) 在调用时导入分段违规

python - 平滑分类输出

python - 如果此字段未在构造函数中传递,则在 Django Form clean() 方法中设置字段值

python - 如何点击通过gtk.Window?

java - 如何在窗口中输出 ArrayList?

c++ - PLT 代码中的段错误。任何想法为什么?