【问题标题】:installing PyYAML and libyaml without root or sudo在没有 root 或 sudo 的情况下安装 PyYAML 和 libyaml
【发布时间】:2014-06-11 16:02:20
【问题描述】:

我需要使用 libyaml 绑定设置 PyYAML。 我正在开发 5.7 版的 Red Hat Enterprise Linux 客户端,并且我在 /tools/Devel/epd_free-7.3-2rh5-x86_64 下安装了 Enthought Python 7.3.2 的本地副本 并将/tools/Devel/epd_free-7.3-2rh5-x86_64/bin 添加到$PATH

我正在处理这个本地副本,因为我在机器上没有 root 或 sudo 访问权限。

安装 libyaml 我已经完成了:

tar -xvzf yaml-0.1.5.tar.gz
cd yaml-0.1.5
./configure prefix=/tools/Devel/epd_free-7.3-2-rh5-x86_64
make
make install

创造了

/tools/Devel/epd_free-7.3-2rh5-x86_64/include/yaml.h

还有

/tools/Devel/epd_free-7.3-2rh5-x86_64/lib/libyaml-0.so.2
/tools/Devel/epd_free-7.3-2rh5-x86_64/lib/libyaml-0.so.2.0.3
/tools/Devel/epd_free-7.3-2rh5-x86_64/lib/libyaml.a
/tools/Devel/epd_free-7.3-2rh5-x86_64/lib/libyaml.la
/tools/Devel/epd_free-7.3-2rh5-x86_64/lib/libyaml.so
/tools/Devel/epd_free-7.3-2rh5-x86_64/lib/pkgconfig

但是,当我尝试安装 PyYAML 时,我得到了

pip install PyYAML

Downloading/unpacking PyYAML
  Downloading PyYAML-3.11.tar.gz (248kB): 248kB downloaded
  Running setup.py (path:/tmp/pip_build_greglac/PyYAML/setup.py) egg_info for package PyYAML

Installing collected packages: PyYAML
  Running setup.py install for PyYAML
    checking if libyaml is compilable
    gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -O2 -fPIC -I/tools/Devel/epd_free-7.3-2-rh5-x86_64/include/python2.7 -c build/temp.linux-x86_64-2.7/check_libyaml.c -o build/temp.linux-x86_64-2.7/check_libyaml.o
    build/temp.linux-x86_64-2.7/check_libyaml.c:2:18: error: yaml.h: No such file or directory
    build/temp.linux-x86_64-2.7/check_libyaml.c: In function âmainâ:
    build/temp.linux-x86_64-2.7/check_libyaml.c:5: error: âyaml_parser_tâ undeclared (first use in this function)
    build/temp.linux-x86_64-2.7/check_libyaml.c:5: error: (Each undeclared identifier is reported only once
    build/temp.linux-x86_64-2.7/check_libyaml.c:5: error: for each function it appears in.)
    build/temp.linux-x86_64-2.7/check_libyaml.c:5: error: expected â;â before âparserâ
    build/temp.linux-x86_64-2.7/check_libyaml.c:6: error: âyaml_emitter_tâ undeclared (first use in this function)
    build/temp.linux-x86_64-2.7/check_libyaml.c:6: error: expected â;â before âemitterâ
    build/temp.linux-x86_64-2.7/check_libyaml.c:8: error: âparserâ undeclared (first use in this function)
    build/temp.linux-x86_64-2.7/check_libyaml.c:11: error: âemitterâ undeclared (first use in this function)

    libyaml is not found or a compiler error: forcing --without-libyaml
    (if libyaml is installed correctly, you may need to
     specify the option --include-dirs or uncomment and
     modify the parameter include_dirs in setup.cfg)

Successfully installed PyYAML
Cleaning up...

我认为这是因为 PyYAML 在默认位置寻找 libyaml。是否可以为 pyyaml 安装指定 libyaml 的位置?

【问题讨论】:

    标签: linux python-2.7 yaml pyyaml libyaml


    【解决方案1】:

    使用https://pypi.python.org/simple/pyyaml/ 并下载 PyYAML-3.11.tar.gz 在 Windows 中为我工作

    然后我解压它,打开后我在这个位置写了命令 setup.py install

    其他包搜索https://pypi.python.org/simple

    【讨论】:

      【解决方案2】:

      基于答案here 的想法,这些步骤对我有用

      pip install --user ruamel.yaml
      

      然后在你的脚本中替换

      import yaml
      

      与:

      from ruamel.yaml import YAML
      yaml=YAML(typ='safe')
      

      【讨论】:

        猜你喜欢
        • 2014-09-05
        • 1970-01-01
        • 2011-08-15
        • 2021-01-07
        • 2012-07-23
        • 2021-12-14
        • 2019-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多