首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从Ruamel.yaml导入YAML

无法从Ruamel.yaml导入YAML
EN

Stack Overflow用户
提问于 2019-05-23 19:06:45
回答 1查看 6.4K关注 0票数 1

我试图使用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

我怎样才能解决这个问题?

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-29 10:38:59

您的系统安装的ruamel.yaml版本已经严重过时,现在(2019年5月)为0.15.96。引入YAML类的API (您的程序找不到的)是两年前引入的。

另外,你的Python (3.4)从2019年到03-18就已经结束了.

您可以按照旧的,PyYAML,API:

代码语言:javascript
复制
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)

这意味着:

代码语言:javascript
复制
# example
name:
  # details
  family: Smith   # very common
  given: Bob      # one of the siblings

请注意,您从YAML加载数据,而不是代码。

当然,使用最新版本的ruamel.yaml和维护版本的Python会更好。如果您不能安装较新的Python版本,或者自己编译它,则仍然可以安装较新版本的ruamel.yaml

代码语言:javascript
复制
$ 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56281529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档