Как установить yaml на python windows

Обновлено: 05.07.2024

YAML расшифровывается как Yet Another Mark-up Language, что означает «Еще один язык разметки». Этот формат файлов сейчас очень популярен для хранения сериализованных данных, которые достаточно удобочитаемы для человека.

Такой формат в основном используется для файлов конфигурации, но может применяться и для других целей. Содержимым такого файла могут быть различные типы скалярных данных, например число, строка и т.д. Так же это могут быть составные данные, такие как список или словарь. Расширение YAML-файлов – .yaml .

Для начала

Конечно же, прежде чем решать какие-либо задачи, нужно установить модуль PyYAML. Это, пожалуй, лучший модуль Python для чтения файлов YAML. Однако он не устанавливается вместе с Python по умолчанию. Поэтому, прежде чем проверять примеры, которые мы разберем ниже, вам придется его установить.

Чтобы установить PyYAML, выполните следующую команду:

pip install pyyaml

Создание файла YAML

Для дальнейшей работы нам понадобится файл с содержимым, как в примере ниже. Создайте его и назовите client.yaml.

Пример 1. Чтение содержимого YAML после преобразования объекта Python

После установки пакета PyYAML модуль YAML можно импортировать в скрипт для чтения содержимого YAML путем преобразования объекта Python.

Для создания содержимого YAML (путем сериализации содержимого объекта Python) используется функция dump() модуля yaml.

Давайте напишем код для генерации и вывода в консоль потока YAML путем преобразования содержимого объекта Python. По умолчанию функция dump() сортирует содержимое словаря на основе ключей.

После запуска кода мы получим следующий результат:

Элементы всех словарей списка Python преобразованы в элементы содержимого YAML. При этом вывод отсортирован по ключам словаря. Поэтому значение ключа author было выведено первым, а значение ключа price – последним.

Пример 2. Чтение содержимого из файла YAML

В данном примере мы будем использовать файл client.yaml, созданный ранее.

Напишем следующий код для чтения отсортированного на основе ключей содержимого файла client.yaml .

Функция load() используется для чтения полного содержимого нашего файла. Эта функция вернет содержимое файла в виде списка словарей Python. Затем функция dump() преобразует список в поток YAML, который мы после выведем в консоль.

При запуске этого кода получим следующий вывод:

Пример 3. Чтение ключей и значений из файла YAML

Обратите внимание, что содержимое файла не отсортировано, поскольку мы не использовали функцию dump() .

Пример 4. Чтение содержимого YAML-файла в список словарей

Функция safe_load() используется для преобразования содержимого файла YAML в список словарей Python. Эту функцию также можно использовать для загрузки данных из ненадежных источников.

Давайте напишем код для загрузки содержимого файла YAML (с помощью функции safe_load() ) и вывода загруженного содержимого в консоль.

В выводе получаем список словарей:

Заключение

В этой статье мы на нескольких примерах разобрали, как читать файлы YAML в Python. Конечно, с практикой придёт большее понимание, как работать с библиотекой PyYAML. А сейчас можно запустить код из примеров, которые мы привели выше, и удостовериться, что тема чтения файлов YAML полностью понятна.

У меня есть программа Python, которая использует YAML. Я попытался установить его на новый сервер с помощью pip install yaml , и он возвращает следующее:

Как установить пакет yaml для Python? Я бегу Python 2.7. (OS: Debian хриплый)

Я использую Wing IDE, как мне установить пакет hypothesis Python на свой компьютер? Я уже скачал файл zip, использую ли я командную строку для его установки или в Wing IDE есть опция для этого?

Вы можете попробовать функцию поиска в pip,

который ищет пакеты в PyPI с yaml в кратком описании. Это показывает различные пакеты, включая PyYaml, yamltools и PySyck, среди прочих (обратите внимание, что PySyck docs рекомендуют использовать PyYaml, так как syck устарел). Теперь вы знаете конкретное имя пакета, вы можете установить его:

Если вы хотите установить python yaml в масштабе всей системы в linux, вы также можете использовать менеджер пакетов, например aptitude или yum :

pip install pyyaml

Если у вас нет pip, запустите easy_install pip , чтобы установить pip, который является установщиком пакета go-to - зачем использовать pip вместо easy_install? . Если вы предпочитаете придерживаться easy_install, то easy_install pyyaml

Обновление: в настоящее время установка выполняется с помощью pip, но libyaml по-прежнему требуется для создания расширения C (на mac):

Для MacOSX (mavericks), похоже, работает следующее:

У меня есть две версии python (3 и 2), а Python 2-это версия по умолчанию, я хочу установить определенный пакет только для Python 3, Я использую windows 7 всякий раз, когда я использую pip install, он устанавливает пакет python 2 Как указать, какая версия python для установки pio

У меня есть Python 2.7 в качестве корня. Мне нужно установить пакет statistics в Python 3.6, а его нет в средах anaconda navigator. Как установить statistics с conda или pip для вторичной среды Python?

Если libyaml не найден или не скомпилирован, PyYAML может обойтись без него на Mavericks.

Есть три пакета с поддержкой YAML. Syck ( pip install syck ), который реализует спецификацию YAML 1.0 с 2002 года; PyYAML ( pip install pyyaml ), которая следует спецификации YAML 1.1 с 2004 года; и ruamel.yaml , которая следует последней спецификации (YAML 1.2 с 2009 года).

Вы можете установить совместимый пакет YAML 1.2 с pip install ruamel.yaml или, если вы используете современную версию Debian/Ubuntu (или производную) с:

$ sudo aptitude install python-yaml

или новее для python3

$ sudo aptitude install python3-yaml

следующая команда загрузит pyyaml , который также включает в себя yaml

Установите libYAML и его заголовки:

Установите из источников, (не забудьте активировать свой venv):

Для меня это сделала установка версии разработки libyaml.

Если у вас есть роскошь создать файл yaml самостоятельно или если вам не требуется ни одна из этих функций обычного yaml, я рекомендую использовать strictyaml вместо стандартного пакета pyyaml .

Короче говоря, default yaml имеет некоторые серьезные недостатки с точки зрения безопасности, интерфейса и предсказуемости. strictyaml -это подмножество спецификации yaml, которое не имеет этих проблем (и лучше документировано).

OPINION: strictyaml должна быть реализацией по умолчанию yaml, а старая спецификация yaml должна быть устаревшей.

Похожие вопросы:

Я скачал deb-пакет panda3d1.9_1.9.3-xenial_amd64.deb и хочу установить его для Python 3. Мой OS - это Linux Ubuntu 16.04. По умолчанию python - это 2.7.12, и я бы предпочел сохранить его по.

Кто-нибудь знает, как установить пакет MiniSom (или любой другой самоорганизующийся пакет карт) в Python? С уважением.

Я использую PyCharm 2018.2.4 с Python 3.7. Я хочу запустить некоторые начальные данные, поэтому в консоли управления Python я попытался запустить свой файл yaml, который закончился этой ошибкой.

Я использую Wing IDE, как мне установить пакет hypothesis Python на свой компьютер? Я уже скачал файл zip, использую ли я командную строку для его установки или в Wing IDE есть опция для этого?

У меня есть две версии python (3 и 2), а Python 2-это версия по умолчанию, я хочу установить определенный пакет только для Python 3, Я использую windows 7 всякий раз, когда я использую pip install.

У меня есть Python 2.7 в качестве корня. Мне нужно установить пакет statistics в Python 3.6, а его нет в средах anaconda navigator. Как установить statistics с conda или pip для вторичной среды.

Недавно я удалил некоторые файлы, связанные с python 2.7 , и теперь я сошел с ума. Я хочу использовать pip для установки пакета python для текущего пользователя, а не глобального пользователя. ➜

Мне нужно установить пакет powerlaw в python. если я звоню из приглашения, список python оказывается установленным. Вместо этого, когда я открываю spyder для python, он не распознает пакет. как я.

У меня есть программа на Python, которая использует YAML. Я попытался установить его на новом сервере с помощью, pip install yaml и он возвращает следующее:

Как мне установить пакет yaml для Python? Я использую Python 2.7. (ОС: Debian Wheezy)

Вы можете попробовать функцию поиска в пипсах,

который ищет пакеты в PyPI с yaml в кратком описании. Это показывает различные пакеты, включая PyYaml, yamltools и PySyck, среди других (обратите внимание, что документы PySyck рекомендуют использовать PyYaml, так как syck устарел). Теперь вы знаете конкретное имя пакета, вы можете установить его:

Если вы хотите установить Python yaml для всей системы в Linux, вы также можете использовать менеджер пакетов, например aptitude или yum :

Название пакета PyYAML по крайней мере на Fedora 21 и CentOS 7 просто PyYAML нет python-yaml . PyYAML реализует старую спецификацию YAML 1.1 2004 года (Syck - еще более старую спецификацию 1.0). ruamel.yaml теперь является устаревшим пакетом, который реализует спецификацию YAML1.2 Так что, если я нахожусь в системе, где нет ни pip, ни менеджера пакетов? @FirefoxMetzger вы можете получить Python , получить пипс , собрать LibYAML из исходного кода и, наконец, установить PyYAML . LibYAML не требуется строго, поскольку PyYAML будет работать с чистым питоном (хотя и медленнее) Большое спасибо, ваш ответ полностью решил мой вопрос.

pip install pyyaml

Если у вас нет pip, запустите easy_install pip для установки pip, который является установщиком пакетов для перехода - зачем использовать pip вместо easy_install? , Если вы предпочитаете придерживаться easy_install, то easy_install pyyaml

Обновление: в настоящее время установка выполняется с помощью pip, но libyaml все еще требуется для сборки расширения C (на Mac):

Для MacOSX (mavericks), кажется, работает следующее:

Это единственный рабочий ответ для OS X Yosemite, когда я пытался. Это работало для меня на Yosemite, но только с Python 2.7.9 от brew, а не с Python 2.7.6 OS X. Это был единственный рабочий ответ для OS X Lion, когда я пытался. Спасибо! Я думал, что это не работает, потому что я использовал операционную систему 2011 года в 2020 году.

Если libyaml не найден или скомпилирован, PyYAML может обойтись без него на Mavericks.

На Ubuntu 14.04 LTS я получил ошибку libyaml is not found or a compiler error: forcing --without-libyaml при использовании sudo pip install PyYAML . Что я должен делать? Спасибо. Тем не менее, я сказал Successfully installed PyYAML . Смотрите pip-PyYAML для полной информации. Еще раз спасибо.

Существует три пакета с поддержкой YAML. Syck ( pip install syck ), которая реализует спецификацию YAML 1.0 2002 года; PyYAML ( pip install pyyaml ), которая следует спецификации YAML 1.1 2004 года; и ruamel.yaml, который следует последней спецификации (YAML 1.2 от 2009 года).

Вы можете установить YAML 1.2 совместимый пакет с pip install ruamel.yaml или, если вы используете современную версию Debian / Ubuntu (или производную) с:

Системы на основе Debian:

$ sudo aptitude install python-yaml

или новее для python3

$ sudo aptitude install python3-yaml

будет загружена следующая команда pyyaml , которая также включает yaml

Установите libYAML и его заголовки:

Установите из источников (не забудьте активировать ваш venv):

Это был единственный метод, который заставил меня правильно установить CLoaders на MacOS. Я раньше пытался, brew install libyaml & pip install pyyaml но python -c 'from yaml import CSafeLoader' продолжал терпеть неудачу

Если у вас есть возможность создать файл yaml самостоятельно или если вам не нужны какие-либо из этих функций обычного yaml, я рекомендую использовать strictyaml вместо стандартного pyyaml пакета.

Короче говоря, в yaml по умолчанию есть серьезные недостатки в плане безопасности, интерфейса и предсказуемости. strictyaml это подмножество спецификации yaml, у которого нет таких проблем (и лучше задокументировано).

МНЕНИЕ: strictyaml должна быть реализация yaml по умолчанию, а старая спецификация yaml должна быть устаревшей.

Мы все любим Ansible, но Ansible – это YAML. Для конфигурационных файлов существует масса форматов: списки значений, пары «параметр-значение», INI-файлы, YAML, JSON, XML и множество других. Однако по нескольким причинам из всех них YAML часто считается особенно трудным. В частности, несмотря на его освежающий минимализм и впечатляющие возможности для работы с иерархическими значениями, синтаксис YAML может раздражать своим Python-образными подходом к отступам.


Если вас бесит YAML, вы можете – и должны! – предпринять 10 следующих шагов, чтобы снизить свое раздражение до приемлемого уровня и полюбить YAML. Как и положено настоящему списку, наша десятка советов будет нумероваться с нуля, медитацию и духовные практики добавляем по желанию ;-)

0. Заставьте ваш редактор работать

Неважно, какой у вас текстовый редактор – для него наверняка существует хотя бы один плагин для работы с YAML. Если у вас такого нет, немедленно найдите и установите. Потраченное на поиск и настройку время будет многократно окупаться каждый раз, когда вам придется редактировать YAML.

Например, редактор Atom поддерживает YAML по умолчанию, а вот для GNU Emacs придется установить дополнительные пакеты, например, yaml-mode.


Emacs в режиме YAML и отображения пробелов.

Если в вашем любимом редакторе нет режима YAML, то часть проблем можно решить, поработав с настройками. Например, штатный для GNOME текстовый редактор Gedit не имеет режима YAML, но по умолчанию подсвечивает синтаксис YAML и позволяет настроить работу с отступами:


Настройка отступов в Gedit.

А плагин drawspaces для Gedit отображает пробелы в виде точек, устраняя неясности с уровнями отступа.

Иными словами, потратьте время на изучение своего любимого редактора. Выясните, что он сам или его сообщество разработки предлагают для работы с YAML, и используйте эти возможности. Вы точно об этом не пожалеете.

1. Используйте линтер (linter)

В идеале языки программирования и языки разметки используют предсказуемый синтаксис. Компьютеры хорошо справляются с предсказуемостью, поэтому еще в 1978 году возникла концепция линтера. Если за 40 лет своего существования она прошла мимо вас и вы до сих пор не пользуетесь YAML-линтером, то самое время попробовать yamllint.

Установить yamllint можно с помощью штатного менеджера пакетов Linux. Например, в Red Hat Enterprise Linux 8 или Fedora это делается так:


Затем вы просто запускаете yamllint, передавая ему YAML-файл для проверки. Вот как это выглядит, если передать линтеру файл с ошибкой:


Цифры слева – это не время, а координаты ошибки: номер строки и столбца. Описание ошибки может вам ни о чем не говорить, зато вы точно знаете, где она находится. Просто посмотрите на это место в коде, и, скорее всего, все станет ясно.

Когда yamllint не находит ошибок в файле, на экран ничего не выводится. Если вас пугает такая тишина и хочется немного больше обратной связи, то можно запускать линтер с условной командой echo через двойной амперсанд (&&), вот так:


В POSIX двойной амперсанд срабатывает тогда и только тогда, когда предшествующая команда возвращает 0. А yamllint как раз возвращает количество найденных ошибок, поэтому вся эта условная конструкция и работает.

2. Пишите на Python, а не на YAML

Если вас реально бесит YAML, просто не пишите на нем, в буквальном смысле. Бывает, что YAML – это единственный формат, который воспринимается приложением. Но и в этом случае необязательно создавать YAML-файл. Пишите на том, что вам нравится, а потом конвертируйте. Например, для Python есть отличная библиотека pyyaml и целых два способа конвертирования: самоконвертирование и конвертирование через скрипты.

Самоконвертирование

В этом случае файл с данными заодно является и Python-скриптом, который генерирует YAML. Этот способ лучше всего подходит для небольших наборов данных. Вы просто пишите JSON-данные в переменную Python, предваряете это директивой import, а в конце файла добавляете три строчки для реализации вывода.


Теперь запускаем это файл на Python-е и на выходе получаем файл output.yaml:

Конвертирование через скрипты

В этом случае сначала пишем на JSON-е, а затем запускаем конвертор в виде отдельного Python-скрипта, который на выходе дает YAML. По сравнению с предыдущим этот способ лучше масштабируется, поскольку конвертирование отделено данных.


Затем создадим простой скрипт-конвертор и сохраним его под именем json2yaml.py. Этот скрипт импортирует оба модуля — YAML и JSON Python, а также загружает указанный пользователем файл JSON, выполняет конвертирование и пишет данные в файл output.yaml.


Сохраните этот скрипт в system path и запускайте по мере необходимости:

3. Парсите много и часто

Иногда на проблему полезно взглянуть под другим углом. Если вам трудно представить взаимосвязи между данными в YAML, можно временно преобразовать их в нечто более привычное.

Например, если вам удобно работать со словарными списками или с JSON, то YAML можно преобразовать в JSON всего двумя командами в интерактивной оболочке Python. Допустим, у вас есть YAML-файл mydata.yaml, тогда вот как это будет выглядеть:


На эту тему можно найти массу других примеров. Кроме того, в наличии множество онлайн-конвертеров и локальных парсеров. Так что не стесняйтесь переформатировать данные, когда видите в них только непонятную мешанину.

4. Читайте спеки

5. Псевдоконфиги

При написании книги или статьи всегда полезно сперва набросать предварительный план, хотя бы в виде оглавления. Так же и с YAML. Скорее всего, вы представляете, какие данные надо записать в файл YAML, но не очень понимаете, как связать их друг с другом. Поэтому прежде чем ваять YAML, нарисуйте псевдоконфиг.

Псевдоконфиг похож на псевдокод, где не надо заботиться о структуре или отступах, отношениях «родитель-потомок», наследовании и вложенности. Так и здесь: вы рисуете итерации данных по мере того, как они возникают у вас в голове.


Псевдоконфиг с перечислением программистов (Martin и Tabitha) и их навыков (языков программирования: Python, Perl, Pascal и Lisp, Fortran, Erlang, соответственно).

Нарисовав псевдоконфиг на листе бумаги, внимательно проанализируйте его и, если все в порядке, оформите в виде валидного YAML-файла.

6. Дилемма «табуляция или пробелы»

Вам придется решить дилемму «табуляция или пробелы?». Не в глобальном смысле, а лишь на уровне вашей организации, или хотя бы проекта. Неважно, будет ли при этом использоваться пост-обработка скриптом sed, настройка текстовых редакторов на машинах программистов или же поголовное взятие расписок о строгом соблюдении указаний линтера под угрозой увольнения, но все члены вашей команды, которые так или иначе касаются YAML, в обязательном порядке должны использовать только пробелы (как того требует спецификация YAML).

В любом нормальном текстовом редакторе можно настроить автозамену табуляции на заданное количество пробелов, поэтому бунта приверженцев клавиши Tab можно не бояться.

Как хорошо известно каждому ненавистнику YAML, на экране не видно разницы между табуляцией и пробелами. А когда чего-то не видно, об этом, как правило, вспоминают в последнюю очередь, после того, как перебрали, проверили и устранили все остальные возможные проблемы. Час времени, убитый на поиск кривой табуляции или блока пробелов, просто вопиет о том, что вам над срочно создать политику использования того или другого, а затем реализовать железобетонную проверку ее соблюдения (например, через Git-хук для принудительного прогона через линтер).

7. Лучше меньше да лучше (или больше – это меньше)

Некоторые люди любят писать на YAML, поскольку он подчеркивает структуру. При этом они активно используют отступы, чтобы выделять блоки данных. Это такое своего рода жульничество для имитации языков разметки, в которых используются явные разделители.

Вот пример такой структурированности из документации Ansible:


Кому-то такой вариант помогает разложить в голове структуру YAML, других он наоборот раздражает массой ненужных, на их взгляд, отступов.

Но если вы являетесь владельцем YAML-документа и отвечаете за его сопровождение, то вы и только вы должны определять, как использовать отступы. Если вас раздражают большие отступы, сведите их к минимуму, который только возможен согласно спецификации YAML. Например, вышеприведенный файл из документации Ansible без каких бы то ни было потерь можно переписать вот так:

8. Используйте заготовки

Если при заполнении файла YAML вы постоянно повторяете одни и те же ошибки, имеет смысл вставить в него шаблон-заготовку в виде комментария. Тогда в следующий раз можно будет просто скопировать эту заготовку и вписать туда реальные данные, например:

9. Используйте что-то другое

Если приложение не держит вас мертвой хваткой, то, возможно, стоит сменить YAML на другой формат. Со временем конфигурационные файлы могут перерастать себя и тогда лучше преобразовать их в простые скрипты на Lua или Python.

YAML – отличная штука, которую многие любят за минимализм и простоту, но это далеко не единственный инструмент в вашем арсенале. Так что иногда от него можно отказаться. Для YAML легко найти библиотеки парсинга, поэтому, если вы предложите удобные варианты миграции, ваши пользователи относительно безболезненно переживут такой отказ.

Если же без YAML никак не обойтись, то возьмите на вооружение эти 10 советов и победите свою неприязнь к YAML раз и навсегда!

Читайте также: