You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RDKit调用MolToImage报错:需带Cairo支持的编译版本(Windows环境)

RDKit绘制分子结构报错:MolToImage需要Cairo支持

问题描述

在Windows 11的Anaconda3环境下,Jupyter Notebook和Spyder中使用RDKit时,多数功能正常运行,但调用Draw模块的MolToImage方法绘制分子结构时,触发以下错误:

RuntimeError: MolToImage requires that the RDKit be built with Cairo support

环境配置

Anaconda 2.6.6
Python 3.13.5
rdkit 2025.03.6
cairo 1.18.4
pycairo 1.23.0

(已多次安装卸载相关组件,问题未解决)

复现代码

from rdkit import Chem
from rdkit.Chem import Descriptors
from rdkit.Chem import Draw
c = "C1=COC(=O)O1"
molecule = Chem.MolFromSmiles(c) # 此步骤正常运行
average_mol_weight = Descriptors.MolWt(molecule)  # 此步骤正常运行
print(f"Average Molecular Weight: {average_mol_weight}") # 此步骤正常运行
p = Draw.MolToImage(molecule)  #### 此处报错

完整报错信息

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In[4], line 1
----> 1 p = Draw.MolToImage(molecule)

File ~\anaconda3\Lib\site-packages\rdkit\Chem\Draw\__init__.py:103, in MolToImage(mol, size, kekulize, wedgeBonds, fitImage, options, **kwargs)
    101   raise ValueError('Null molecule provided')
    102 if not hasattr(rdMolDraw2D, 'MolDraw2DCairo'):
--> 103   raise RuntimeError("MolToImage requires that the RDKit be built with Cairo support")
    104 return _moltoimg(mol, size, kwargs.get('highlightAtoms', []), kwargs.get('legend', ''),
    105                  highlightBonds=kwargs.get('highlightBonds',
    106                                            []), drawOptions=options, kekulize=kekulize,
    107                  wedgeBonds=wedgeBonds, highlightColor=kwargs.get('highlightColor', None))

RuntimeError: MolToImage requires that the RDKit be built with Cairo support

解决方案

1. 重新安装带Cairo支持的RDKit版本

Anaconda默认源的RDKit可能未编译Cairo支持,建议使用conda-forge源重新安装:

conda remove rdkit cairo pycairo
conda install -c conda-forge rdkit

conda-forge提供的预编译RDKit版本通常包含完整的Cairo依赖,能直接解决该问题。

2. 使用无需Cairo的替代绘图函数

如果重新安装仍有问题,可改用不依赖Cairo的方法:

  • 在Jupyter环境中直接显示分子:
from IPython.display import display
# 使用SVG格式渲染,无需Cairo
display(Draw.MolToSVG(molecule))
  • 保存分子结构为图片文件(无需Cairo的方法):
Draw.MolToFile(molecule, "molecule.png")

3. 检查Windows环境变量

确保Cairo的动态链接库路径被加入系统PATH:

  1. 找到Anaconda环境下的Library\bin目录(示例路径:C:\Users\你的用户名\anaconda3\envs\你的环境名\Library\bin)
  2. 确认该目录存在cairo.dll文件
  3. 将此路径添加到系统PATH环境变量,然后重启Python环境

内容的提问来源于stack exchange,提问作者saroj sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:40:17