【问题标题】:How do I install the yaml package for Python?如何为 Python 安装 yaml 包?
【发布时间】:2012-12-25 01:23:59
【问题描述】:

我有一个使用 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)

【问题讨论】:

  • 添加有关您使用哪个平台的信息。库。 pyyaml.org/wiki/LibYAML不是纯python包,可能会导致安装不同。
  • 对于其他混淆命名的人,pip install pyyaml 在您的实际脚本中导入为import yaml

标签: python python-2.7 yaml pip pyyaml


【解决方案1】:

你可以试试pip的搜索功能,

$ pip search yaml

在简短描述中使用 yaml 在 PyPI 中查找包。这揭示了各种包,包括 PyYaml、yamltools 和 PySyck 等(请注意,PySyck docs 建议使用 PyYaml,因为 syck 已过时)。现在你知道了一个特定的包名,你可以安装它:

$ pip install pyyaml

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

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

【讨论】:

  • PyYAML 包的名称至少在 Fedora 21 和 CentOS 7 上只是 PyYAML 而不是 python-yaml
  • PyYAML 实现了 2004 年的旧 YAML 1.1 规范(Syck 甚至更早的 1.0 规范)。 ruamel.yaml 现在是实现 YAML1.2 规范的非过时包
  • 如果我在一个既没有 pip 也没有包管理器的系统上怎么办?
  • @FirefoxMetzger 你可以get pythonget pipbuild LibYAML from source,最后是install PyYAML。 LibYAML 不是严格要求的,因为 PyYAML 将与纯 python 一起使用(尽管速度较慢)
  • @phil294 你是对的——真可惜。当我在 2013 年写这个答案时,PyPI 中的 yaml 大约有 10 个结果;今天有>4500; >750 匹配“pyyaml”。在 how does pip search work 的 cmets 中,我们发现 pip 仅返回前 100 个结果,这是由于 PyPI api。但这只是对问题的解释,而不是解决选择合适包装问题的方法。会很高兴提出将哪些内容纳入答案的建议
【解决方案2】:

pip install pyyaml

如果您没有 pip,请运行 easy_install pip 来安装 pip,这是首选软件包安装程序 - Why use pip over easy_install?。如果您更喜欢使用easy_install,那么easy_install pyyaml

【讨论】:

    【解决方案3】:

    这回答如果适用于 MacOS

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

    brew install libyaml
    python -m pip install pyyaml
    

    过时的方法

    对于 MacOSX(小牛),以下工作:

    brew install libyaml
    sudo python -m easy_install pyyaml
    

    【讨论】:

    • 这是我尝试时 OS X Yosemite 的唯一有效答案。
    • 这在 Yosemite 上对我有用,但仅适用于 brew 的 python 2.7.9,而不是 OS X python 2.7.6。
    • 这是我尝试时 OS X Lion 的唯一有效答案。非常感谢!我认为它不起作用,因为我在 2020 年使用的是 2011 年的操作系统。
    【解决方案4】:
    pip install PyYAML
    

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

    【讨论】:

    • 在 Ubuntu 14.04 LTS 上,使用 sudo pip install PyYAML 时出现错误 libyaml is not found or a compiler error: forcing --without-libyaml。我该怎么办?谢谢。
    • 但是,我说的是Successfully installed PyYAML。有关完整信息,请参阅pip-PyYAML。再次感谢。
    【解决方案5】:

    共有三个支持 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
    

    【讨论】:

      【解决方案6】:

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

      pip install pyYaml
      

      【讨论】:

        【解决方案7】:

        基于 Debian 的系统:

        $ sudo aptitude install python-yaml

        python3 或更新版本

        $ sudo aptitude install python3-yaml

        【讨论】:

          【解决方案8】:

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

          安装 libYAML 及其标头:

          sudo apt-get install libyaml-dev
          

          Downloadpyyaml 来源:

          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 上正确安装 CLoaders 的唯一方法。我之前尝试过brew install libyaml & pip install pyyaml,但是python -c 'from yaml import CSafeLoader' 一直失败
          【解决方案9】:

          考虑改用strictyaml

          如果您有幸自己创建 yaml 文件,或者您不需要常规 yaml 的 any of these features,我建议使用 strictyaml 而不是标准的 pyyaml 包。

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

          您可以阅读更多关于problems with regular yaml here

          意见: strictyaml 应该是 yaml 的默认实现,旧的 yaml 规范应该被废弃。

          【讨论】:

            【解决方案10】:

            对我来说,安装 libyaml 的开发版本就可以了。

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

            【讨论】:

            • 请说明它是系统范围的 Python 安装,是 x86-64 架构,APT 应该有类似的命令...
            • @GeorgeSovetov 完成
            • @MayankJaiswal 你将如何安装 Python 3 的开发版本?
            【解决方案11】:

            输入 pip3 install yaml 或类似 Connor pip3 install strictyaml

            【讨论】:

            • 欢迎来到 StackOverflow!你不应该回答老问题,特别是如果他们已经有 10 个答案并且已经很老了,除非你有一些重要的东西要添加,这似乎不是这里的情况。提供新问题的答案,这样您还可以对帖子发表评论(一旦您有足够的声誉)
            • 抱歉,我刚开始在 Stackoverflow 上提问
            • 别担心,二月份的时候我就在你现在的位置...需要一些时间来适应这个系统,但你可以从中受益很多:)
            猜你喜欢
            • 2019-06-17
            • 2021-05-08
            • 2015-05-13
            • 2022-11-21
            • 2020-11-16
            • 2010-10-17
            • 2018-09-02
            • 2023-03-08
            • 2011-02-01
            相关资源
            最近更新 更多