软件简介
Open Babel 是一个化学工具箱,旨在讲化学数据的多种语言。这是一个开放的协作项目,允许任何人搜索、转换、分析或存储来自分子建模、化学、固态材料、生物化学或相关领域的数据。
安装环境
- OS :Redhat 6
- gcc 4.4.7 (系统默认版本)
安装依赖库
可以先 跳过 该步骤,后续出现对应的问题再来重新安装
swig 4.0.1 (optional)
由于系统自带的 swig 工具版本太低,在安装时没法正确的识别新语法,故这里需要先安装 swig ,如果你执行 swig -version 查看的版本高于 3.x 即可跳过该步骤
cd /path/to/swig-4.0.1
./configure --prefix=/path/to/install
make -j 8 && make install
安装完成后需要添加到系统变量里
export PATH=/path/to/install/bin:$PATH
boost 1.73.0 库(optional)
系统中自带的 boost 有问题,只能手动重新安装,安装方法参考以前的文章
zlib 1.2.3 库(optional)
使用 conda 安装
libxm2 库(optional)
使用 conda 安装
cairo库(optional)
使用 conda 安装
上述三个库一般系统都会自带,如果提示缺失可以使用 conda 或者系统自带的命令安装 (yum、apt-get 等等)
安装 openbabel 3.1.1
安装包下载
从 github 上下载源码包
编译
# 我这里使用了 gcc 7 的版本,如果有编译器语法的问题可以尝试切换编译器
cd /path/to/openbabel-3.1.1
mkdir _build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/path/to/install \
-DBoost_DIR:PATH=/path/to/soft/boost/1.73.0/lib/cmake/Boost-1.73.0 \
-DBoost_INCLUDE_DIR:FILEPATH=/path/to/soft/Boost/1.73.0/include \
-DBoost_LIBRARY_DIR_DEBUG:PATH=/path/to/soft/Boost/1.73.0/lib \
-DBoost_LIBRARY_DIR_RELEASE:PATH=/path/to/soft/Boost/1.73.0/lib \
-DBoost_SYSTEM_LIBRARY_DEBUG:FILEPATH=/path/to/soft/Boost/1.73.0/lib/libBoost_system.so \
-DBoost_SYSTEM_LIBRARY_RELEASE:FILEPATH=/path/to/soft/Boost/1.73.0/lib/libBoost_system.so \
-DCAIRO_INCLUDE_DIR:PATH=/path/to/anaconda3/include/cairo \
-DCAIRO_LIBRARY:FILEPATH=/path/to/anaconda3/lib/libcairo.so \
-DLIBXML2_INCLUDE_DIR:PATH=/path/to/anaconda3/include \
-DLIBXML2_LIBRARY:FILEPATH=/path/to/anaconda3/lib/libxml2.so
make -j 8 && make install
因为我这里加载了 conda 环境,而 cmake 会从系统自带的库中查找 boost、libxml2、zlib 这些库,所以需要在这里手动指定这些库的位置
如果你都是使用的系统命令(yum、apt-get 等)安装,这里就不需要后面的指定路径的命令,只需要指定一个安装路径即可
安装 python openbabel 3.1.1.1
安装包下载
点击该 链接 即可 python openbabel 3.1.1.1 包
编译
python setup.py build_ext -I/path/to/openbabel-3.1.1/install/include -L/path/to/openbabel-3.1.1/install/lib
python setup.py install --prefix=/path/to/python/libs/install
主要是需要指定一下刚才安装的 openbabel 3.1.1 的位置,install 时,如果不需要指定安装位置,会自动安装在 python 默认的 libs 里
系统配置
上述软件都安装完成后需要加载环境变量后才能正常使用
export PYTHONPATH=/path/to/openbabel-3.1.1/install/lib:$PYTHONPATH
export PATH=/path/to/openbabel-3.1.1/install/bin:$PATH
export LD_LIBRARY_PATH=/path/to/openbabel-3.1.1/install/lib:$LD_LIBRARY_PATH
FAQs
下面是技术总结 / 安装过程中出现的问题
1. 安装 openbabel-3.1.1 时,cmake 提示有关 boost / zlib / libxml2 的 error
参考上面的方法安装对应的依赖库后,在 cmake 时指定它们的位置
2. 安装 openbabel-3.1.1 时 fatal error: cairo.h: No such file or directory
cmake 时指定 cairo 头文件的位置错误,仔细对照 cmake 的命令
-DCAIRO_INCLUDE_DIR:PATH=/path/to/anaconda3/include/cairo
3. 安装 python openbabel 3.1.1.1 时 Error: Unable to find ‘openbabel/babelconfig.h’
如果你是直接 pip install openbabel 会出现该错误,因为系统的库文件路径中没有 openbabel 3,需要先安装 openbabel 3.1.1
4. 安装 python openbabel 3.1.1.1 时 openbabel/openbabel-python.i:79: Error: Syntax error in input(1).
安装新版本的 swig ,这是因为旧版本 swig 不兼容新语法
5. 安装完成后 import openbabel 出错 cannot import name ‘_openbabel’
需要在系统环境变量里加载之前安装的 openbabel 3
export PYTHONPATH=/path/to/openbabel-3.1.1/install/lib:$PYTHONPATH
export PATH=/path/to/openbabel-3.1.1/install/bin:$PATH
export LD_LIBRARY_PATH=/path/to/openbabel-3.1.1/install/lib:$LD_LIBRARY_PATH