В вашей системе установлена версия 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