我目前正在python中运行一个源代码,它使用METIS。我想使用Jetbrains PyCharm、conda解释器运行它,这些解释器安装在windows 10上。虽然我已经使用conda安装了METIS,但我无法启用共享库,因此遇到了以下错误:
ModuleNotFoundError:没有名为“metis”的模块
当我试图在没有conda的情况下运行它时,我遇到了以下错误,尽管我已经将metis.dll位置添加到环境变量中。
RuntimeError:无法加载METIS
有人能帮我一下吗?
发布于 2019-07-11 23:27:15
这个问题已经很老了,但我遇到了同样的问题,从兔子洞里跑了下来。太久了..。我有一个对我有用的答案。
首先,您应该使用pip:pip install metis获得python包装器。
其次,您必须安装conda-metis,您可以找到这里.尽管pip调用metis python包装器metis,但它只是metis包装器,而没有metis本身。
将文件放在conda-metis-master中的某个文件路径中。
安装需要一些修复。确保你有一个最新版本的视觉工作室(我用了2017年)。对我来说,VS运行BUILD-WINDOWS.txt中的指令时遇到了问题,这使我不得不执行以下线程:
为什么MSBuild在C:\ Microsoft.Cpp.Default.props而不是c:\Program (x86)\MSBuild中查找?(错误MSB4019)
具体来说,我在Windows10Windows上使用了For VisualStudio2017和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\中将变量MSBuildToolPath更改为C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin。
对于python,我们需要一个.dll,而不是.lib1,所以我们还必须仔细查看CMakeLists.txt (参见本文讨论的这里的Linux )。我们在第19行添加:set(METIS_LIBRARY_TYPE SHARED)。
您应该遵循BUILD-WINDOWS.txt指令,但在命令提示符下使用完全权限在conda文件路径中运行.\vsgen -G "Visual Studio 15 2017 Win64",而不是使用Visual 10。
等等!在进一步使用VS构建库之前,我们需要进行另一个修复。如下文所述:
我们必须通过删除行: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中打开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在我的步骤from metis import *上不再失败。
1如果我们可以使用.lib,那么conda install -c conda-forge metis就可以获得这个文件,但是将METIS_DLL设置为.lib文件会导致窗口错误。
发布于 2022-06-11 18:34:00
在得到@晓建辰描述的错误后,我就是这样解决的(VS Studio 2022)。在上述修复之后,要在打开VS解决方案文件后生成一个.dll文件,请转到解决方案资源管理器,右键单击metis项目文件->属性。
在一般属性中,将配置类型更改为动态库(.dll)
在高级属性下,将目标文件扩展名从.lib更改为.dll
因为我们只需要metis.dll文件,所以在解决方案资源管理器中右键单击metis项目文件,然后单击build。.dll可以在..\build\windows\libmetis\Release中找到。
https://stackoverflow.com/questions/50675790
复制相似问题