最近需要在 Singularity 的容器中新增 RDKit,系统是 Ubuntu 18.04 的,起初按照官方手册直接使用 apt-get install python-rdkit
安装,但 apt 的版本太老了才 2016 版。迫于不想使用 conda 搞激活环境那一套,于是只能折腾了半天编译安装。经过多次尝试终于成功,这里记录一下。
apt-get update -y
apt-get install -yq --no-install-recommends \
ca-certificates \
build-essential \
cmake \
wget \
libboost-dev \
libboost-system-dev \
libboost-thread-dev \
libboost-serialization-dev \
libboost-python-dev \
libboost-regex-dev \
libboost-iostreams-dev \
libcairo2-dev \
libeigen3-dev \
python3-dev \
python3-numpy
apt-get clean
rm -rf /var/lib/apt/lists/*
export RDKIT_VERSION=Release_2019_03_2
wget https://github.com/rdkit/rdkit/archive/${RDKIT_VERSION}.tar.gz
tar -xzf ${RDKIT_VERSION}.tar.gz
mv rdkit-${RDKIT_VERSION} /rdkit
rm ${RDKIT_VERSION}.tar.gz
mkdir /rdkit/build
cd /rdkit/build
cmake -Wno-dev \
-D RDK_INSTALL_INTREE=OFF \
-D RDK_INSTALL_STATIC_LIBS=OFF \
-D RDK_BUILD_INCHI_SUPPORT=ON \
-D RDK_BUILD_AVALON_SUPPORT=ON \
-D RDK_BUILD_PYTHON_WRAPPERS=ON \
-D RDK_BUILD_CAIRO_SUPPORT=ON \
-D RDK_USE_FLEXBISON=OFF \
-D RDK_BUILD_THREADSAFE_SSS=ON \
-D RDK_OPTIMIZE_NATIVE=ON \
-D PYTHON_EXECUTABLE=/usr/bin/python3 \
-D PYTHON_INCLUDE_DIR=/usr/include/python3.5 \
-D PYTHON_NUMPY_INCLUDE_PATH=/usr/lib/python3/dist-packages/numpy/core/include \
-D CMAKE_INSTALL_PREFIX=/usr \
-D CMAKE_BUILD_TYPE=Release \
..
make -j16
make install
rm -rf /rdkit
这里安装的是 Python 3.x 的版本,如果要安装 Python 2.x 则第一段的 python3-dev
和 python3-numpy
改成 python-dev
和 python-numpy
,同时 cmake 的几个参数也换成对应的:
-D PYTHON_EXECUTABLE=/usr/bin/python2
-D PYTHON_INCLUDE_DIR=/usr/include/python2.7
-D PYTHON_NUMPY_INCLUDE_PATH=/usr/lib/python2.7/dist-packages/numpy/core/include
安装后进入 Python 试一下 import rdkit
搞定!