如何在Python中安装yaml包?

470

我有一个使用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不是纯Python包,可能会导致安装不同。http://pyyaml.org/wiki/LibYAML - Larry Cai
1
对于其他人可能会感到困惑的命名问题,pip install pyyaml 在实际脚本中导入时应该写成 import yaml - kevin_theinfinityfund
12个回答

741
你可以尝试在https://pypi.org/search(通过浏览器)上使用搜索功能,并查找PyPI中包含yaml的简短描述的软件包。这将显示出各种软件包,包括PyYaml、yamltools和PySyck等(请注意,PySyck文档建议使用PyYaml,因为syck已经过时)。现在你知道了一个具体的软件包名称,你可以安装它:
$ pip install pyyaml

如果你想在Linux系统中全局安装Python YAML,你也可以使用包管理器,比如aptitude或yum。
$ sudo apt-get install python-yaml
$ sudo yum install python-yaml

11
至少在 Fedora 21 和 CentOS 7 上,PyYAML 包的名称只是 PyYAML,而不是 python-yaml - TNT
4
PyYAML实现了2004年的旧版YAML 1.1规范(而Syck则是更古老的1.0规范)。ruamel.yaml是目前实现YAML1.2规范的非过时软件包。 - Anthon
1
@FirefoxMetzger 你可以获取Python获取pip从源代码构建LibYAML,最后安装PyYAML。虽然PyYAML可以使用纯Python(速度较慢)工作,但不强制要求使用LibYAML。 - tutuDajuju
4
@phil294 你说得对,这真是遗憾。当我在2013年写这个答案时,PyPI中大约有10个yaml的结果;而今天已经有了超过4500个结果;“pyyaml”有超过750个匹配项。在how does pip search work的评论中,我们发现由于PyPI API的限制,pip仅返回前100个结果。但这只是对问题的解释,无法解决选择合适软件包的问题。如果你有任何建议可以融入这个答案,我会非常高兴。 - Bonlenfum
3
有一个变化,@keithpjolley:pip 不再允许搜索了。 :D 另一个要点是许多 Python 程序员似乎更喜欢 ruamel.yaml 而不是 pyyaml - Hilton Fernandes
显示剩余7条评论

127

pip install pyyaml

如果您没有安装pip,请运行easy_install pip安装pip,它是首选的包安装器 - 为什么选择pip而不是easy_install?。如果您愿意坚持使用easy_install,则可以运行easy_install pyyaml


75

这是针对MacOS的答案

更新:现在使用pip进行安装,对于许多用户来说,wheel可能可用(取决于您的Mac和所需版本的PyYaml)。在某些情况下,在Mac上构建C扩展仍然需要libyaml;可以使用以下命令完成:

brew install libyaml
python -m pip install pyyaml

过时的方法:

对于MacOSX(Mavericks),以下方法有效:

brew install libyaml
sudo python -m easy_install pyyaml

9
这是我尝试过的唯一适用于OS X Yosemite的有效答案。 - Nima
1
这对我在Yosemite上有效,但只适用于brew的python 2.7.9,而不是OS X的python 2.7.6。 - David Moles
这是我尝试时OS X Lion唯一有效的答案。非常感谢!我以为它不起作用是因为我在2020年使用2011操作系统。 - TheTechRobo the Nerd

25
pip install PyYAML
如果在Mavericks上没有找到或编译libyaml,PyYAML可以不使用它。

在Ubuntu 14.04 LTS上,当我使用sudo pip install PyYAML时,出现了错误libyaml未找到或编译器错误:强制--without-libyaml。我该怎么办?谢谢。 - hengxin
1
然而,我说“成功安装了PyYAML”。请参阅pip-PyYAML获取完整信息。再次感谢。 - hengxin

16

有三个支持YAML的软件包。Syck (pip install syck)实现了2002年的YAML 1.0规范; PyYAML (pip install pyyaml)遵循了2004年的YAML 1.1规范;而ruamel.yaml遵循了最新的(YAML 1.2,来自2009年)规范。

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

sudo apt-get install python-ruamel.yaml

10

以下命令将下载pyyaml,其中还包括yaml

pip install pyYaml

8

基于Debian的系统:

$ sudo aptitude install python-yaml

对于python3,需要更高版本:

$ sudo aptitude install python3-yaml


5

“应该有一种 -- 最好只有一种 -- 明显的方法来做到这一点。” 所以我要再添加一种。这个更像是针对 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

从源代码安装(不要忘记激活您的虚拟环境):

. 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 

2
这是唯一一个让我在MacOS上正确安装CLoaders的方法。之前我尝试过 brew install libyaml & pip install pyyaml,但是 python -c 'from yaml import CSafeLoader' 一直失败。 - Luis Meraz

3

考虑使用strictyaml

如果您有创建yaml文件的机会,或者您不需要常规yaml中这些功能,我建议您使用strictyaml而不是标准的pyyaml包。

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

您可以在此处阅读有关常规yaml问题的更多信息

个人观点:strictyaml应该成为yaml的默认实现,旧的yaml规范应该被淘汰。


2

在虚拟环境或使用Python 2中安装

pip install pyyaml

对于Python 3(根据您的版本也可能是pip3.10)

pip3 install pyyaml

如果出现权限错误

sudo pip3 install pyyaml

如果您的PATH环境变量中没有pip

python -m pip install pyyaml

对于Python 3(根据您的版本也可能是pip3.10)

python3 -m pip install pyyaml

对于Anaconda

conda install -c conda-forge pyyaml


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接