AttributeError: 'Image' object has no attribute 'save'

AttributeError: 'Image' object has no attribute 'save'

我正在学习 RDKit 的基础教程。

p = Chem.MolFromSmiles('[nH]1cnc2cncnc21')
subms = [x for x in ms if x.HasSubstructMatch(p)]
len(subms)

AllChem.Compute2DCoords(p)

for m in subms: AllChem.GenerateDepictionMatching2DStructure(m,p)
    img=Draw.MolsToGridImage(subms,molsPerRow=4,subImgSize=(200,200),legends=[x.GetProp("_Name") for x in subms])    
    img.save('images/cdk2_molgrid.aligned.o.png')    

我的版本是这样的:

NP=pd.read_excel(r'C:\Users\BajMic\NPPics.xlsx', header=0, index_col=False, keep_default_na=True)
NP['mol']=NP.smiles.apply(getMol)

ms= [i for i in NP['mol'] if i is not None]
img=Draw.MolsToGridImage(ms, molsPerRow=10)
img.save('Pic.png')

在教程和我自己的代码这两种情况下,我都得到了同样的错误: AttributeError: 'Image' 对象没有属性 'save'

现在,这令人困惑,因为我只是在学习一个简单的教程。我查看了其他类似的主题,但我认为我的案例要简单得多。我在这里错过了什么?

教程:https://www.rdkit.org/docs/GettingStartedInPython.html

虽然在 MolsToGridImage() 中默认是 returnPNG=False,但我必须在函数中明确设置它,它对我有用。

你应该试试:img=Draw.MolsToGridImage(ms, molsPerRow=10, returnPNG=False)