问题描述
!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/')
即
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 /