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

RDKit中Chem.Descriptors模块函数调用报NameError,求排查解决

解决RDKit中Descriptors未定义的NameError问题

你的代码报错NameError: name 'Descriptors' is not defined,核心原因是**Descriptors子模块没有被正确导入到当前命名空间**——即使导入了Chem,它的子模块也不会自动加载。

下面是几种可行的修复方案:

方案1:使用完整模块路径调用函数

直接通过Chem.Descriptors的层级访问目标函数,无需额外导入子模块:

from rdkit import Chem

mol = Chem.MolFromSmiles('CC')
# 用完整路径调用MolWt
print(Chem.Descriptors.MolWt(mol))  # 输出30.07

方案2:显式导入Descriptors子模块

如果需要多次使用Descriptors下的函数,显式导入子模块会更方便:

from rdkit import Chem
# 正确导入Descriptors子模块(注意它属于rdkit.Chem下)
from rdkit.Chem import Descriptors

mol = Chem.MolFromSmiles('CC')
print(Descriptors.MolWt(mol))  # 输出30.07

方案3:直接导入单个函数

如果只需要使用某一个Descriptors函数,可以直接导入该函数:

from rdkit import Chem
from rdkit.Chem.Descriptors import MolWt

mol = Chem.MolFromSmiles('CC')
print(MolWt(mol))  # 输出30.07

注意点

你提到“显式导入该子模块也无法解决”,大概率是导入路径错误。比如写成from rdkit import Descriptors就会失败,因为Descriptors是rdkit.Chem的子模块,不是rdkit的直接子模块,必须按正确层级导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:12:45