使用pysrim包遇TypeError:load()缺少必需位置参数'Loader'求助
TypeError: load() missing 1 required positional argument: 'Loader' when using pysrim for SRIM/TRIM simulations
我在Jupyter Notebook中使用pysrim包进行SRIM/TRIM批量模拟,已经成功安装了SRIM程序和pysrim包,但调用pysrim时出现如下错误:
TypeError: load() missing 1 required positional argument: 'Loader'
一开始我以为是Python版本过高(当前用的是3.9.12),于是搭建了Python3.6环境,但问题依然存在。我的导入代码如下:
import os import numpy as np import matplotlib.pyplot as plt from srim import TRIM, Ion, Layer, Target from srim.output import Results
恳请各位提供相关帮助。
问题原因与解决方案
这个错误本质是pysrim依赖的pyyaml库版本不兼容导致的:旧版pysrim使用的yaml API在新版pyyaml中被废弃,新版要求调用load()时必须显式指定Loader参数。
解决步骤:
降级pyyaml到兼容版本
执行以下命令安装与pysrim适配的pyyaml版本:pip install pyyaml==5.4.1该版本仍支持无Loader参数的
load()调用,完美适配pysrim的现有代码。验证与重置(可选)
若降级后仍有问题,可尝试卸载并重新安装pysrim确保依赖匹配:pip uninstall pysrim -y pip install pysrim源码修改方案(不推荐)
若不想降级pyyaml,可手动修改pysrim源码中调用yaml的文件(通常是config.py或同类配置文件),将:yaml.load(file)修改为:
yaml.load(file, Loader=yaml.FullLoader)但这种方式会被后续pysrim版本更新覆盖,仅作为临时应急方案。
内容的提问来源于stack exchange,提问作者Zach K
相关产品推荐
相关产品推荐

