为什么我们必须在 Google Colab 中为 Rdkit 附加路径

问题描述

!chmod +x Miniconda3-py37_4.8.3-Linux-x86_64.sh
!time bash ./Miniconda3-py37_4.8.3-Linux-x86_64.sh -b -f -p /usr/local
!time conda install -q -y -c conda-forge rdkit

import sys
sys.path.append('/usr/local/lib/python3.7/site-packages/')

在这代码中为什么要在安装rdkit后追加路径?

sys.path.append('/usr/local/lib/python3.7/site-packages/')

解决方法

启动 Python 解释器后,将创建导入时用于搜索模块的所有目录的列表。您可以从变量 sys.path 访问它。如果您在 colab 中运行它,您可以看到 Python 在哪里搜索模块。

import sys
sys.path

>>> ['','/env/python','/usr/lib/python36.zip','/usr/lib/python3.6','/usr/lib/python3.6/lib-dynload','/usr/local/lib/python3.6/dist-packages','/usr/lib/python3/dist-packages','/usr/local/lib/python3.6/dist-packages/IPython/extensions','/root/.ipython']

问题是 conda 会将软件包安装到 sys.path 中未包含的目录('/usr/local/lib/python{pyversion}/site-packages/'),因此 Python 将无法定位软件包由 conda 安装。这很容易解决,只需将路径附加到 sys.path。现在 Python 知道在哪里查找包,在本例中为 RDKit。请注意,我们可以通过查看 rdkit 的安装位置来验证是否是这种情况:

sys.path.append('/usr/local/lib/python3.7/site-packages/')

import rdkit
rdkit.__file__

>>> /usr/local/lib/python3.7/site-packages/rdkit/__init__.py 

还要注意 sys.path 中的目录是按顺序在第一次找到模块时停止搜索的。因此,当通过 colab 已经提供的 conda 安装包时,colab 版本将优先。

,

您可以使用此代码。在 Colab 中安装 rdkit 会快很多。

!curl -L bit.ly/rdkit-colab | tar xz -C /