如何安装适用于Python的yaml软件包?


346

我有一个使用YAML的Python程序。我尝试使用将其安装在新服务器上pip install yaml,并且返回以下内容:

$ 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

如何安装适用于Python的yaml软件包?我正在运行Python 2.7。(作业系统:Debian Wheezy)


添加有关您使用哪个平台的信息。libyaml。pyyaml.org/wiki/LibYAML不是纯python软件包,它可能会导致不同的安装。
拉里·蔡

Answers:


567

您可以尝试点子搜索功能,

$ pip search yaml

它在简短说明中使用yaml在PyPI中查找软件包。这揭示了各种软件包,包括PyYaml,yamltools和PySyck等(请注意,PySyck文档建议使用PyYaml,因为syck已过时)。现在您知道了特定的软件包名称,可以安装它:

$ pip install pyyaml

如果要在linux系统范围内安装python yaml,也可以使用软件包管理器,例如aptitudeyum

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

9
至少在Fedora 21和CentOS 7上,PyYAML软件包的名称PyYAML不是python-yaml
TNT 2015年

3
PyYAML实施了2004年以来的旧YAML 1.1规范(Syck甚至是更早的1.0规范)。ruamel.yaml现在是实现YAML1.2规范的最新版本
Anthon

那么,如果我所在的系统既没有pip也没有软件包管理器,该怎么办?
FirefoxMetzger

1
@FirefoxMetzger您可以获取python获取pip从源代码构建LibYAML,最后安装PyYAML。LibYAML并非严格要求,因为PyYAML将与纯python(尽管速度较慢)一起使用
tutuDajuju

非常感谢,您的回答已完全解决了我的问题。
Wolfog


49

更新:如今,安装已通过pip完成,但仍需要libyaml来构建C扩展(在Mac上):

brew install libyaml
python -m pip install pyyaml

过时的方法

对于MacOSX(小牛),以下方法似乎有效:

brew install libyaml
sudo python -m easy_install pyyaml

6
当我尝试时,这是OS X Yosemite的唯一有效答案。
尼玛

1
这在Yosemite上对我有效,但仅适用于brew的python 2.7.9,不适用于OS X python 2.7.6。
大卫·摩尔

当我尝试时,这是OS X Lion的唯一可行答案。非常感谢!我以为那是行不通的,因为我在2020
。– TheTechRobo36414519

20
pip install PyYAML

如果找不到libyaml或编译的PyYAML可以在Mavericks上不使用它。


在Ubuntu 14.04 LTS上,libyaml is not found or a compiler error: forcing --without-libyaml使用时出现错误sudo pip install PyYAML。我该怎么办?谢谢。
恒新2014年

1
但是,我说Successfully installed PyYAML。有关完整信息,请参见pip-PyYAML。再次感谢。
衡新2014年

14

有三个支持YAML的软件包。Syck(pip install syck),从2002年开始实施YAML 1.0规范;pip install pyyaml遵循2004年的YAML 1.1规范的PyYAML();和ruamel.yaml下面的最新(YAML 1.2,从2009年)规范。

您可以使用以下命令安装YAML 1.2兼容软件包,pip install ruamel.yaml或者如果您正在运行Debian / Ubuntu(或衍生版本)的现代版本,则可以使用:

sudo apt-get install python-ruamel.yaml

6

基于Debian的系统:

$ sudo aptitude install python-yaml

或更高版本的python3

$ sudo aptitude install python3-yaml



3

“应该有一种-最好只有一种-显而易见的方法。” 因此,我再添加一个。这更像是Debian / Ubuntu的“从源代码安装”,来自https://github.com/yaml/pyyaml

安装libYAML及其标头:

sudo apt-get install libyaml-dev

下载 pyyaml来源:

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

从源代码安装(不要忘记激活您的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 

这是导致我在MacOS上正确安装CLoader的唯一方法。我以前尝试过brew install libyaml & pip install pyyaml,但python -c 'from yaml import CSafeLoader'一直没有
路易斯Meraz

1

使用strictyaml代替

如果您可以自行创建yaml文件,或者不需要常规yaml的任何这些功能,则建议使用strictyaml而不是标准pyyaml软件包。

简而言之,默认yaml在安全性,接口和可预测性方面存在一些严重缺陷。strictyaml是yaml规范的一个子集,没有这些问题(并且有更好的记录)。

您可以在这里阅读更多有关常规Yaml问题的信息

意见: strictyaml应为yaml的默认实现,而旧的yaml规范应作废。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.