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

调用sPyRMSD的io.loadmol()时出现NameError: load未定义错误

sPyRMSD io.loadmol() 报 NameError: name 'load' is not defined 错误解决

问题重现

运行以下代码时触发错误:

from spyrmsd import io,rmsd
ref = io.loadmol("tempref.pdb")

报错信息

Reference Molecule:lig_ref.pdb
PDBqt File:ligand_vina_out.pdbqt
Traceback (most recent call last):
File "rmsd.py", line 34, in <module>
ref = io.loadmol("tempref.pdb")
File "/home/aathiranair/.local/lib/python3.8/site-packages/spyrmsd/io.py", line 66, in loadmol
mol = load(fname)
NameError: name 'load' is not defined

已尝试操作

  • 卸载并重装sPyRMSD
  • 创建虚拟环境运行脚本
    问题依旧存在。

目标PDB文件内容(tempref.pdb)

ATOM      1  O6  LIG   359       2.349   1.014   7.089  0.00  0.00              
ATOM      9  H   LIG   359       1.306   1.691   9.381  0.00  0.00              
ATOM      2  C2  LIG   359       0.029   4.120   8.082  0.00  0.00              
ATOM      3  O9  LIG   359      -1.106   2.491   9.345  0.00  0.00              
ATOM      4  C1  LIG   359      -0.204   3.890   0.337  0.00  0.00              
ATOM      5  S5  LIG   359      -0.355   4.108   4.075  0.00  0.00              
ATOM      8  C4  LIG   359      -3.545   1.329   7.893  0.00  0.00              
ATOM      7  C7  LIG   359      -1.133   5.150   9.406  0.00  0.00              
ATOM      6  C3  LIG   359      -0.064   1.805   8.234  0.00  0.00    

解决方案

该错误属于sPyRMSD模块内部的代码bug,io.loadmol()函数中调用了未定义的load变量,可通过以下方式解决:

方法1:绕过io.loadmol(),直接用依赖库加载分子

sPyRMSD依赖OpenBabel或RDKit,可直接用这些库加载分子后转换为sPyRMSD兼容格式:

  • 使用OpenBabel示例:
from openbabel import pybel
from spyrmsd import rmsd

# 加载PDB文件
ref_mol = next(pybel.readfile("pdb", "tempref.pdb"))
# 转换为sPyRMSD可用的Molecule对象
ref = rmsd.Molecule.from_obabel(ref_mol)
  • 使用RDKit示例:
from rdkit import Chem
from spyrmsd import rmsd

# 加载PDB文件
ref_mol = Chem.MolFromPDBFile("tempref.pdb")
# 转换为sPyRMSD可用的Molecule对象
ref = rmsd.Molecule.from_rdkit(ref_mol)

方法2:手动修复sPyRMSD的io.py文件

找到安装路径下的/home/aathiranair/.local/lib/python3.8/site-packages/spyrmsd/io.py文件,修改loadmol函数:
原代码片段:

def loadmol(fname: str, **kwargs) -> Molecule:
    mol = load(fname)
    return mol

修改为(显式导入load函数):

def loadmol(fname: str, **kwargs) -> Molecule:
    from .io import load
    mol = load(fname, **kwargs)
    return mol

方法3:安装开发版修复bug

如果官方已修复该问题,可直接安装开发版本:

pip install git+https://github.com/RMeli/spyrmsd.git

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:00:37