我目前在python中运行使用METIS的源代码。我想使用Jetbrains PyCharm,conda解释器运行它,这些安装在Windows 10上。虽然我已经使用conda安装了METIS,但我无法启用共享库,我遇到了这个错误:
ModuleNotFoundError:没有名为' metis'
的模块当我尝试在没有conda的情况下运行它时,我遇到了以下错误,尽管我已将metis.dll位置添加到环境变量中。
RuntimeError:无法加载METIS dll
有人可以帮我解决一下吗?
答案 0 :(得分:0)
这个问题很老,但是我遇到了同样的问题,在兔子的洞里钻了很长时间……我有一个对我有用的答案。
首先,您应该使用pip pip install metis
获取python metis包装器。
第二,您必须安装conda-metis ,您可以在其中找到here。尽管pip称其为metis python包装器metis,但它只是metis包装器,本身没有metis。
将文件放在conda-metis-master中的某些文件路径中。
安装需要一些修复程序。确保您拥有最新版本的Visual Studios(我使用的是2017年)。对我来说,VS在运行BUILD-WINDOWS.txt中的指令时遇到问题,这使我进入了该线程:
特别是,答案对于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
的{{1}}和变量MSBuildOverrideTasksPath
的{{1}}更改为ToolsVersion\4.0\
。
对于python metis,我们需要一个MSBuildToolPath
,而不是C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
[1],因此我们还必须更仔细地研究.dll
(请参阅本讨论的Linux版本{{ 3}})。我们在第19行添加:.lib
。
您应按照BUILD-WINDOWS.txt的说明进行操作,但要在命令提示符下的conda-metis文件路径中运行CMakeLists.txt
,而不要使用Visual Studio 10,而应具有完全权限。
等等!在按照有关使用VS构建库的说明进行操作之前,我们需要另一个修复程序。遵循以下内容:
我们必须通过删除以下行来编辑文件set(METIS_LIBRARY_TYPE SHARED)
:.\vsgen -G "Visual Studio 15 2017 Win64"
。 (或rint() issue after creating VS Project using CMake上列出的修复程序。)
然后转到path_to_your_metis_dir\GKlib\gk_arch.h
。
在Visual Studio中打开#define rint(x) ((idx_t)((x)+0.5))
,在顶部转到path_to_your_metis_dir\build\windows\
,然后从下拉菜单转到METIS.sln
。之后,Build
文件将位于Build Solution
中。
最后,我们在命令提示符下运行:
.dll
此后,python metis不再对我的步骤path_to_your_metis_dir\build\windows\libmetis\Release\
失败。
[1]如果我们可以使用set METIS_DLL=path_to_your_metis_dir\build\windows\libmetis\Release\metis.dll
,则from metis import *
将可以获取此文件,但是将.lib
设置为conda install -c conda-forge metis
文件会导致Windows错误。