我正在尝试使用ruamel.yaml,并直接从ruamel的文档中使用此代码,但出现错误:
回溯(最近通话最近): 在第12行的文件“ ruameltest.py”中 yaml = YAML() NameError:名称“ YAML”未定义
我正在使用Linux(RHEL)
Python 3.4.9
rpm软件包:python34-ruamel-yaml-0.13.14-1.el7.x86_64
如何解决此问题?
import sys
from ruamel.yaml import YAML
inp = """\
# example
name:
# details
family: Smith # very common
given: Alice # one of the siblings
"""
yaml = YAML()
code = yaml.load(inp)
code['name']['given'] = 'Bob'
yaml.dump(code, sys.stdout)
答案 0 :(得分:0)
您的系统上安装的ruamel.yaml版本已严重过时,现在(2019年5月)为0.15.96。引入YAML
类的API是您的程序无法找到的,是两年前引入的。
此外,自2019年3月18日起,您的Python(3.4)已停产。
您可以遵循旧的PyYAML API:
import sys
from ruamel.yaml import RoundTripLoader, RoundTripDumper, load, dump
inp = """\
# example
name:
# details
family: Smith # very common
given: Alice # one of the siblings
"""
data = load(inp, Loader=RoundTripLoader)
data['name']['given'] = 'Bob'
dump(data, sys.stdout, Dumper=RoundTripDumper)
给出:
# example
name:
# details
family: Smith # very common
given: Bob # one of the siblings
请注意,您是从YAML而不是 code 加载数据的。
当然最好使用ruamel.yaml
的最新版本并使用
版本的Python。如果您无法安装更新的Python版本或自己编译,则您可以
仍然可以安装ruamel.yaml
的较新版本:
$ python3 -m venv ~/venv/yamltest
$ source ~/venv/yamltest/bin/activate
$ pip install -U pip
$ pip install 'ruamel.yaml<=0.15.94'
然后您应该可以按原样使用程序。
0.15.94之后发布的较新版本不包含.whl
文件
对于Python 3.4,这些版本可能仍然可以使用,但是您可能
需要安装编译器以使用C扩展,并且
如果您这样做,则应该下载并安装Python 3.7