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

Pint库自定义molar_energy派生维度调用get_compatible_units报KeyError

Pint自定义派生维度调用get_compatible_units报错的原因

这个问题的根因是你仅完成了派生维度的别名定义,没有完成Pint识别该维度可用单位的全流程配置,具体分为两点:

  • Pint的get_compatible_units方法依赖内置的dimensional_equivalents缓存查询对应量纲的单位列表,这个缓存默认仅收录Pint内置维度对应的量纲条目。你定义的[molar_energy]会被解析为量纲容器<UnitsContainer({'[length]': 2, '[mass]': 1, '[substance]': -1, '[time]': -2})>,但该量纲并未预先加入缓存,直接查询就会触发KeyError。
  • 即使你后续将对应量纲加入缓存,如果没有给[molar_energy]维度注册任何实际可用的单位(如kJ/mol、cal/mol等),方法的返回结果也会为空列表。

修复方法

你可以选择任意一种方案解决该问题:

  1. 给自定义维度注册至少一个对应单位,Pint会自动将对应的量纲加入缓存:
# 定义完派生维度后补充单位注册
UR.define('joule_per_mole = J / mol = J/mol')
  1. 直接使用基础维度组合作为入参调用,不需要依赖自定义维度别名:
UR.get_compatible_units('[energy]/[substance]')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:27:03