场景
是安装torch-scatter问题引出的。
原本已经有一个虚拟环境安装好了torch
和torch_geometric
.
在随后安装torch-scatter的时候,尝试了所有可提供的版本,都无法成功,随即展开解决环境问题之旅。
一个明显的报错是:
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Micros....
于是根据提示去 https://visualstudio.microsoft.com/visual-cpp-build-tools/官网下载安装build tools。
安装成功之后重新使用pip install torch-scatter
安装还是出现同样的错误。
需要注意的一点:
上述安装build tools之后提示要重启,但是由于应用关系,没有重启,不知道是不是可能因为这样没有解决。
以下内容是又遇到了同样的编译错误,使用源码安装编译出错,又提示安装build,于是翻出来控制面板的程序卸载,发现里面有10版本的Microsoft visual c++,就所有的都卸载了,重新安装,最后编译成功了。单纯安装划横线的两个在我这里没用,还需要安装Windows software development kit,猜测这里面包含了真正的编译器,redistributable是不够的
网上有人提出是版本问题:也就是说所有版本要对应才行,
pip install torch==1.2.0
pip install torch_geometric==1.4.1
pip install torch_sparse==0.4.4
pip install torch_scatter==1.4.0
pip install torch_cluster==1.4.5
问题就是我已经尝试过所有torch_scatter
版本,也就是说,可能我torch
的版本可能不支持,毕竟我用的1.7.1+cpu
,这再一次提示我们,版本最新不一定最好,它可能不支持其他的包。
重新来个新的环境
那就重新建一个虚拟环境,重新安装一下torch,
1.命令行在线安装
pip install torch
之前安装torch的时候出现过torch has an invalid wheel的问题,链接里给出的解决方案这次行不通了。
当然,这在配环境的过程中,是非常自然而正常的事情。
仔细观察提示信息,发现了ModuleNotFoundError: No module named 'tools.nnwrap'
。通过百度发现这也是一个很常见的问题:
解决方案一:通过官网选择配置选择相应的生成安装命令
解决方案二
如果通过以上两个方案,解决了那自然是极好的。
如果没有解决,那可能需要更加仔细地看提示信息。提示信息可能会不一样。
2.whl安装
可以去一个非官方的python包网站下载对应的pytorch包。下载完毕之后同样使用pip进行安装。
一个小概率事件,可能会出现标题错误:
whl is not a supported wheel on this platform
错误
可能原因主要在两个方面:
- anaconda的版本是32位的,但是下载的pytorch包是64位的。
- 安装包对应的版本和python对应的版本不对应。
即使安装成功,在import torch
的时候,也是可能出现问题的。
比如我,就出现了这个问题:
OSError: [WinError 126] 找不到指定的模块。 Error loading "C:\Users\xx\Anaconda3\envs\graph-emotion64\lib\site-packages\torch\lib\caffe2_detectron_ops.dll" or one of its dependencies.
这是一个常见问题,报错:caffe2_detectron_ops.dll“ or one of its dependencies.的解决办法,解决办法是:
pip install intel-openmp
在我这里成功地import torch
了。
重新开始安装torch_geometric
很顺利。
接下来安装torch_sparse
失败
安装torch_scatter
还是失败。
提示的错误依然是error: Microsoft Visual C++ 14.0 is required
一个显然的结论是重启时必要的。
然而重启之后发现依然不行。
百度发现了一个极其相似的踩坑之路:
win10 anaconda3 cuda9.2 cudnn配置torch-scatter踩的坑
文中提到了一个潜在的很有道理的解决方案:既然时编译器有问题,那么就简单直接地替换anaconda下地编译器。具体过程可以参考文中给地详细步骤,因为我这里最终没有采用这种方案,所以直接掠过。
另外一个安装编译器地方法就是直接使用命令行:
conda install mingw libpython
这样编译之后,果然错误改变了,不再是之前的gcc版本错误,而是:
gcc: 错误:/openmp:No such file or directory
opengm又是一个坑。
这个坑,我没有继续深挖。
在继续查找资料的过程中,找到了一篇救命贴:
win10下安装pyg出现torch_scatter报错解决
--------------------分割线--------------------------------
救命贴中的方式时直接绕开编译,下载对应的whl文件,直接进行pip安装,简单记录一下过程:
- List item
打开网页https://pytorch-geometric.com/whl/:
- 发现很多不同的版本,本地命令行运行以下命令,查看torch版本:
-
这里下载对应版本的scatter
-
直接pip安装
总算是成功了,虽然编译器还是有问题,最起码scatter能用了。
可以直接拿到所有的版本对应的地方的whl