Comment installer le package yaml pour Python?


347

J'ai un programme Python qui utilise YAML. J'ai essayé de l'installer sur un nouveau serveur en utilisant pip install yamlet il renvoie ce qui suit:

$ sudo pip install yaml
Downloading/unpacking yaml
  Could not find any downloads that satisfy the requirement yaml
No distributions at all found for yaml
Storing complete log in /home/pa/.pip/pip.log

Comment installer le package yaml pour Python? J'utilise Python 2.7. (OS: Debian Wheezy)


ajoutez des informations sur la plateforme que vous utilisez. libyaml. pyyaml.org/wiki/LibYAML n'est pas un package python pur, il peut provoquer une installation différente.
Larry Cai

Réponses:


568

Vous pouvez essayer la fonction de recherche dans pip,

$ pip search yaml

qui recherche des paquets dans PyPI avec yaml dans la courte description. Cela révèle divers packages, notamment PyYaml, yamltools et PySyck, entre autres (Notez que les documents PySyck recommandent d'utiliser PyYaml, car syck est obsolète). Maintenant que vous connaissez un nom de package spécifique, vous pouvez l'installer:

$ pip install pyyaml

Si vous souhaitez installer python yaml à l'échelle du système sous linux, vous pouvez également utiliser un gestionnaire de packages, comme aptitudeou yum:

$ sudo apt-get install python-yaml
$ sudo yum install python-yaml

9
Le nom du package PyYAML au moins sur Fedora 21 et CentOS 7 n'est tout simplement PyYAMLpas python-yaml.
TNT

3
PyYAML implémente l'ancienne spécification YAML 1.1 de 2004 (Syck la spécification 1.0 encore plus ancienne). ruamel.yaml est désormais le package non obsolète qui implémente la spécification YAML1.2
Anthon

Et si je suis sur un système sans pip ni gestionnaire de paquets?
FirefoxMetzger

1
@FirefoxMetzger vous pouvez obtenir python , obtenir pip , construire LibYAML à partir des sources et enfin installer PyYAML . LibYAML n'est pas strictement requis car PyYAML fonctionnera avec du python pur (bien que plus lent)
tutuDajuju

merci beaucoup, votre réponse a entièrement résolu ma question.
Wolfog


49

Mise à jour: De nos jours, l'installation se fait avec pip, mais libyaml est toujours requis pour construire l'extension C (sur mac):

brew install libyaml
python -m pip install pyyaml

Méthode obsolète :

Pour MacOSX (mavericks), ce qui suit semble fonctionner:

brew install libyaml
sudo python -m easy_install pyyaml

6
C'est la seule réponse qui fonctionne pour OS X Yosemite lorsque j'ai essayé.
Nima

1
Cela a fonctionné pour moi sur Yosemite, mais uniquement avec le python 2.7.9 de brew, pas le python 2.7.6 OS X.
David Moles

C'était la seule réponse qui fonctionnait pour OS X Lion lorsque j'ai essayé. Merci beaucoup! Je pensais que cela ne fonctionnait pas parce que j'utilisais un système d'exploitation 2011 en 2020.
TheTechRobo36414519

20
pip install PyYAML

Si libyaml n'est pas trouvé ou compilé, PyYAML peut s'en passer sur Mavericks.


Sur Ubuntu 14.04 LTS, j'ai eu l'erreur libyaml is not found or a compiler error: forcing --without-libyamllors de l'utilisation sudo pip install PyYAML. Que devrais-je faire? Merci.
hengxin

1
Cependant, je l'ai dit Successfully installed PyYAML. Voir pip-PyYAML pour des informations complètes. Merci encore.
hengxin

14

Il existe trois packages compatibles YAML. Syck ( pip install syck) qui implémente la spécification YAML 1.0 de 2002; PyYAML ( pip install pyyaml) qui suit la spécification YAML 1.1 de 2004; et ruamel.yaml qui suit la dernière spécification (YAML 1.2, de 2009).

Vous pouvez installer le package compatible YAML 1.2 avec pip install ruamel.yamlou si vous utilisez une version moderne de Debian / Ubuntu (ou dérivé) avec:

sudo apt-get install python-ruamel.yaml

6

Systèmes basés sur Debian:

$ sudo aptitude install python-yaml

ou plus récent pour python3

$ sudo aptitude install python3-yaml


5

la commande suivante va télécharger pyyaml, qui comprend égalementyaml

pip install pyYaml

3

"Il devrait y avoir une - et de préférence une seule - manière évidente de le faire." Permettez-moi donc d'en ajouter un autre. Celui-ci ressemble plus à «installer à partir des sources» pour Debian / Ubuntu, à partir de https://github.com/yaml/pyyaml

Installez le libYAML et ses en-têtes:

sudo apt-get install libyaml-dev

Téléchargez les sources pyyaml:

wget http://pyyaml.org/download/pyyaml/PyYAML-3.13.tar.gz

Installez depuis les sources, (n'oubliez pas d'activer votre venv):

. your/env/bin/activate
tar xzf PyYAML-3.13.tar.gz
cd PyYAML-3.13.tar.gz
(env)$ python setup.py install
(env)$ python setup.py test 

C'était la seule méthode qui m'a conduit à installer correctement les CLoaders sur MacOS. J'ai déjà essayé, brew install libyaml & pip install pyyamlmais j'ai python -c 'from yaml import CSafeLoader'continué d'échouer
Luis Meraz

1

Utilisez plutôt stricttyaml

Si vous avez le luxe de créer le fichier yaml vous-même, ou si vous n'avez besoin d' aucune de ces fonctionnalités de yaml normal, je recommande d'utiliser à la strictyamlplace du standardpyyaml package .

En bref, le yaml par défaut présente de graves défauts en termes de sécurité, d'interface et de prévisibilité. strictyamlest un sous-ensemble de la spécification yaml qui n'a pas ces problèmes (et qui est mieux documenté).

Vous pouvez en savoir plus sur les problèmes avec le yaml régulier ici

AVIS: strictyaml devrait être l'implémentation par défaut de yaml et l'ancienne spécification yaml devrait être obsolète.


0

Pour moi, l'installation de la version de développement de libyaml l'a fait.

yum install libyaml-devel         #centos
apt-get install libyaml-dev       # ubuntu

Veuillez inclure des explications selon lesquelles il s'agit d'une installation Python à l'échelle du système, de l'architecture x86-64 de tha tit, qu'il devrait y avoir une commande similaire pour APT ...
George Sovetov

1
@GeorgeSovetov Fait
Mayank Jaiswal

@MayankJaiswal Comment installeriez-vous la version de développement pour Python 3?
Amir
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.