无法从 Ruamel.yaml 导入 YAML

Cannot import YAML from Ruamel.yaml

我正在尝试使用 ruamel.yaml 并直接使用 ruamel 文档中的这段代码,但我收到错误:

回溯(最后一次调用): 文件 "ruameltest.py",第 12 行,位于 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)

您的系统安装的 ruamel.yaml 版本严重过时,现在(2019 年 5 月)为 0.15.96。 API 介绍了 YAML class,你的程序找不到是两年前介绍的

此外,您的 Python (3.4) 自 2019 年 3 月 18 日以来一直 end-of-life。

您可以按照旧的 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.

加载 data

当然最好使用 ruamel.yaml 的 up-to-date 版本和维护的 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