我试图使用ruamel.yaml,并直接从ruamel的文档中使用这段代码,但我得到了错误:
回溯(最近一次调用):文件"ruameltest.py",第12行,在yaml = YAML() NameError:名称'YAML‘未定义
我正在使用Linux (RHEL)
Python 3.4.9
rpm包装:python34 34-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)发布于 2019-05-29 10:38:59
您的系统安装的ruamel.yaml版本已经严重过时,现在(2019年5月)为0.15.96。引入YAML类的API (您的程序找不到的)是两年前引入的。
另外,你的Python (3.4)从2019年到03-18就已经结束了.
您可以按照旧的,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加载数据,而不是代码。
当然,使用最新版本的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之后发布的更新版本不包括Python3.4的.whl文件,这些版本可能仍然有效,但是您可能需要安装一个编译器才能使用C扩展,如果需要的话,就应该下载并安装Python3.7
https://stackoverflow.com/questions/56281529
复制相似问题