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

使用Python从Materials Project下载CIF文件遇API报错求助

解决Materials Project API下载CIF的报错问题

核心原因

你遇到的报错本质是代码实际调用的仍是旧版废弃API端点——哪怕你写了新的mp_api.client导入语句,也可能因为环境依赖冲突,实际运行时还是加载了旧的pymatgen.ext.matproj里的MPRester类。

分步解决办法

1. 清理旧依赖并安装最新版mp-api

先彻底卸载旧的相关包,再安装适配新版API的工具:

pip uninstall -y pymatgen mp-api
pip install --upgrade mp-api

注:新版mp-api已包含所需的pymatgen依赖,无需单独安装旧版pymatgen。

2. 验证MPRester的来源

运行代码前,先确认导入的MPRester来自正确的模块,避免依赖混淆:

from mp_api.client import MPRester
print(MPRester.__module__)

如果输出为mp_api.client.mprester,说明导入正确;若仍显示pymatgen.ext.matproj,则需检查虚拟环境是否残留旧包,或重新执行第一步的卸载安装操作。

3. 正确的CIF下载完整代码

适配新版API的完整代码如下,替换密钥后即可运行:

from mp_api.client import MPRester

# 替换为你的Materials Project API密钥
API_KEY = "your_api_key_here"
mpid = "mp-165"  # 示例:硅晶体的MPID

with MPRester(API_KEY) as mpr:
    # 获取材料结构
    structure = mpr.get_structure_by_material_id(mpid)
    # 保存为CIF文件
    cif_filename = f"{mpid}.cif"
    structure.to(fmt="cif", filename=cif_filename)
    print(f"CIF文件已保存为 {cif_filename}")

4. Python版本适配

你的Python 3.8.10兼容最新版mp-api,若安装时出现版本冲突,可指定一个稳定兼容的版本:

pip install mp-api==0.45.0

额外注意事项

  • 确保你的API密钥有效,且已在Materials Project官网完成身份验证
  • 不要在同一环境中同时安装旧版pymatgen和新版mp-api,避免导入混淆

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:10:19