RDKit是一个非常重要的库,可是它的安装却非常不友好。我尝试了使用conda安装,但是按照博客上写的方法,都无法安装。因此,我只好硬着头皮按照RDKit官网上提供的方法安装。RDKit是由C++语言编写的,因此在WIndows下的安装需要从源代码进行编译,困难重重。
下面是官方的安装教程
rdkit/Install.md at master · rdkit/rdkit · GitHub
pip install numpy
). Binaries for win64 are available here: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpypip install Pillow
)Recommended extras
以上内容都是常规操作,我就不细说了。
官方建议安装Microsoft Visual Studio 2015或者2017版本 ,社区版即可
直接下载即可
在安装boost的过程,遇到了第一个大的障碍。我一开始是按照RDKit官方给出的方法安装boost,但是一直会导致后续cmake步骤出现错误
Could NOT find Boost (missing: python3) (found version "1.76.0") - CMake Windows
因此,经过我的摸索和验证后,正确的安装boost方法如下:
先打开网址:
Boost C++ Libraries - Browse /boost-binaries/1.66.0 at SourceForge.net
从中选择boost_1_66_0-msvc-14.0-64.exe下载,然后双击安装。安装的路径设置为C:\boost
安装完成之后,需要将C:\boost下的libboost_1_66_0文件夹重命名为lib
第一,把自己的python解释器的路径确认好,并将其加入到windows的系统变量中去。例如,我的python解释器是在conda中的,那么python解释器的路径就设置为C:\Users\10544\anaconda3\envs\SMR
即,Path对应的环境变量中增加C:\Users\10544\anaconda3\envs\SMR
第二,将官网下载的RDKit压缩包解压到C盘,路径为C:\RDKit
第三,在系统的环境变量中再增加一些对应的内容
RDBASE = C:\RDKit
C:\RDKit\lib
'C:\boost\lib'
C:\RDKit'
在C:\RDKit创建build文件夹
打开cmd,输入
cd C:\RDKit\build
由于我们不需要安装INCHI、AVALON和PGSQL,因此我们只需如下的命令
cmake -DRDK_BUILD_PYTHON_WRAPPERS=ON -DBOOST_ROOT=C:/boost -G"Visual Studio 14 2015 Win64" ..
运行之后可能会报错
需要安装Freetype,从下面的网址下载压缩包,解压
https://github.com/freetype/freetype
将F:\freetype-2.5.3\builds\windows\vc2010中的sln用Visual Studio打开,选择RELEASE,x64
然后运行编译
会在F:\freetype-2.5.3\objs\win32\vc2010中生成lib文件。
之后,将F:\freetype-2.12.1\objs的完整路径添加到环境变量FREETYPE_INCLUDE_DIRS中;将F:\freetype-2.12.1\include的完整路径添加到环境变量FREETYPE_LIBRARY中。
如果这样还是会报错的话,执行下面的命令
cmake -DRDK_BUILD_PYTHON_WRAPPERS=ON -DBOOST_ROOT=C:/boost -DFREETYPE_INCLUDE_DIRS='F:\freetype-2.12.1\include' -DFREETYPE_LIBRARY='F:\freetype-2.12.1\objs' -G"Visual Studio 14 2015 Win64" ..
在cmd中输入
C:/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe /m:4 /p:Configuration=Release INSTALL.vcxproj
可能会报错
解决方法如下:
1.需要在系统环境变量中添加路径
VCTargetsPath = C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\
2.还需要更改注册表
将 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0中,新建一个名称
VCTargetsPath = C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\
同样地,在 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0中,新建一个名称
VCTargetsPath = C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\
解决了上述问题后,再次运行
C:/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe /m:4 /p:Configuration=Release INSTALL.vcxproj
可是,我还是遇到了报错
c:\rdkit\code\rdgeneral\Dict.h(276): error C2039: 'string_view': is not a member of 'std' [C:\RDKit\build\Code\RDGeneral\RDGeneral.vcxproj]
经过搜索,发现这个问题似乎与C++17有关。需要使用C++17及以上的特性才能避免报错。
c++ - How to enable /std:c++17 in VS2017 with CMake - Stack Overflow
‘string_view’ is not a member of ‘std’ error. c++ version error? - Newbie - ROOT Forum
可是我尝试了好长实际,还是报错
我也尝试了安装VS 2022,VS 2017,但还是报错。
截止现在,这个问题还是没有解决,如果解决了,我会更新的。
更新
2022年8月2日13:23:33
由于尝试了很久仍然无法解决这个问题,最终我使用conda安装成功了。
具体可以参阅