Невозможно импортировать YAML из Ruamel.yaml - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь использовать ruamel.yaml и использую этот код прямо из документации ruamel, но я получаю ошибку:

Traceback (последний вызов был последним): Файл "ruameltest.py", строка 12, в yaml = YAML () NameError: имя 'YAML' не определено

Я использую Linux (RHEL)

Python 3.4.9

Пакет

об / мин: 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)

1 Ответ

0 голосов
/ 29 мая 2019

В вашей системе установлена ​​версия ruamel.yaml, она сильно устарела, сейчас (май 2019 г.) она составляет 0.15.96.API, который ввел класс YAML, который ваша программа не может найти, был представлен два года назад.

Кроме того, ваш Python (3.4) с конца 2019-18-18 гг.1004 *

Вы можете следовать старому API PyYAML:

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, не включают .whl файлы для Python 3.4, эти версии, вероятно, все еще будут работать, но вам может потребоваться установить компилятор, чтобы использовать расширения C, и есливам нужно просто скачать и установить Python 3.7

...