【问题标题】:How can I install lxml dependencies on Amazon EC2 linux?如何在 Amazon EC2 linux 上安装 lxml 依赖项?
【发布时间】:2014-11-06 10:47:31
【问题描述】:

我试过了:

sudo yum install libxml2-dev libxslt-dev python-dev

我得到了:

Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main/latest                                         | 2.1 kB     00:00     
amzn-updates/latest                                      | 2.3 kB     00:00     
No package libxml2-dev available.
No package libxslt-dev available.
No package python-dev available.

pip 也不起作用。

我收到了这样的包裹:

git clone --branch lxml-3.2.4 https://github.com/lxml/lxml

然后我尝试不使用 cython,因为 sudo python setup.py install 给了我 RuntimeError: ERROR: Trying to build without Cython, but pre-generated 'src/lxml/lxml.etree.c' is not available

sudo python setup.py install --without-cython

然后我得到:

sudo python setup.py install --without-cython
Building lxml version 3.2.4.
WARNING: Trying to build without Cython, but pre-generated 'src/lxml/lxml.etree.c' is not available.
WARNING: Trying to build without Cython, but pre-generated 'src/lxml/lxml.objectify.c' is not available.
Building without Cython.
ERROR: /bin/sh: xslt-config: command not found

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt 
/usr/lib64/python2.6/distutils/dist.py:266: UserWarning: Unknown distribution option: 'bugtrack_url'
  warnings.warn(msg)
running install
running bdist_egg
running egg_info
writing src/lxml.egg-info/PKG-INFO
writing top-level names to src/lxml.egg-info/top_level.txt
writing dependency_links to src/lxml.egg-info/dependency_links.txt
reading manifest file 'src/lxml.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'lxml.etree.c' under directory 'src/lxml'
warning: no files found matching 'lxml.objectify.c' under directory 'src/lxml'
warning: no files found matching 'lxml.etree.h' under directory 'src/lxml'
warning: no files found matching 'lxml.etree_api.h' under directory 'src/lxml'
warning: no files found matching '*.txt' under directory 'src/lxml/tests'
warning: no files found matching '*.html' under directory 'doc'
writing manifest file 'src/lxml.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-2.6/lxml/includes
running build_ext
building 'lxml.etree' extension
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/home/ec2-user/lxml/src/lxml/includes -I/usr/include/python2.6 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.6/src/lxml/lxml.etree.o
gcc: error: src/lxml/lxml.etree.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.
error: command 'gcc' failed with exit status 4
[ec2-user@ip-172-31-14-83 lxml]$ 

真的要我确保安装了libxml2和libxslt的开发包

如果我能做到,我希望它会奏效。有任何想法吗?谢谢!似乎人们对此有相关问题,但大多数都在其他系统上。


更新: 根据 Vor 的建议,我使用了 -devel 扩展,它可以安装依赖项。

sudo yum install libxml2-devel libxslt-devel python-devel

不幸的是,我明白了:

$sudo python setup.py install --without-cython


Building lxml version 3.4.0.
WARNING: Trying to build without Cython, but pre-generated 'src/lxml/lxml.etree.c' is not available.
WARNING: Trying to build without Cython, but pre-generated 'src/lxml/lxml.objectify.c' is not available.
Building without Cython.
Using build configuration of libxslt 1.1.28
Building against libxml2/libxslt in the following directory: /usr/lib64
/usr/lib64/python2.6/distutils/dist.py:266: UserWarning: Unknown distribution option: 'bugtrack_url'
  warnings.warn(msg)
running install
running bdist_egg
running egg_info
writing requirements to src/lxml.egg-info/requires.txt
writing src/lxml.egg-info/PKG-INFO
writing top-level names to src/lxml.egg-info/top_level.txt
writing dependency_links to src/lxml.egg-info/dependency_links.txt
reading manifest file 'src/lxml.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'lxml.etree.c' under directory 'src/lxml'
warning: no files found matching 'lxml.objectify.c' under directory 'src/lxml'
warning: no files found matching 'lxml.etree.h' under directory 'src/lxml'
warning: no files found matching 'lxml.etree_api.h' under directory 'src/lxml'
warning: no files found matching '*.html' under directory 'doc'
writing manifest file 'src/lxml.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-2.6/lxml/includes
running build_ext
building 'lxml.etree' extension
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/libxml2 -I/home/ec2-user/lxml/src/lxml/includes -I/usr/include/python2.6 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.6/src/lxml/lxml.etree.o -w
gcc: error: src/lxml/lxml.etree.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.
error: command 'gcc' failed with exit status 4

【问题讨论】:

  • 如果您因为问题与编程无关而投票结束,那很好,但请随时回答,以便我可以编程。还有,编译和包管理不是​​和编程有关吗?

标签: python linux amazon-web-services amazon-ec2 lxml


【解决方案1】:

我遇到了同样的问题。在这行之后:

sudo yum install libxml2-devel libxslt-devel python-devel

我又试了一次

sudo yum install lxml

它成功了:)

【讨论】:

  • 你太棒了,谢谢!对于 AWS ami,我需要使用 sudo /usr/local/bin/easy_install lxml 作为第二个命令。
  • pip install lxml 对我来说工作正常(运行第一个命令集后),但通过 pip 安装需要将近 10 分钟。最初我一直按Ctrl+C,因为我认为该进程已冻结,但最终它安装了!
  • 这对我有用,但是:1)没有第二次 yum 安装(我使用 pip)和 2)通过 .ebextension:stackoverflow.com/questions/32945077/…
【解决方案2】:

EC2 t.micro 上的问题是你编译 lxml 包时内存不足。

当你运行时:dmesg |尾巴你会看到问题

[167588.470868] 内存不足:杀死进程 9804 (cc1) 得分 499 或牺牲孩子 [167588.475046] 杀死进程 9804 (cc1) total-vm:693864kB, anon-rss:521696kB, file-rss:0kB

唯一的方法是通过 yum 或其他包管理器安装 python-lxml 包。

【讨论】:

  • 这是我的问题。我将我的实例类型更改为 t2.large,问题已解决。谢谢!
  • 天哪。这拯救了我的一天。服务器只是挂起,我不知道为什么。我无法将任何日志或 ssh 输入服务器。谢谢!
【解决方案3】:
sudo yum install libxml2-devel libxslt-devel python-devel

添加

sudo yum install gcc

这对我有用。

【讨论】:

    【解决方案4】:

    添加到 huapito 的答案。以下代码对我有用。 sudo yum install gcc libxml2-devel libxslt-devel python-devel sudo pip install lxml

    【讨论】:

      【解决方案5】:

      在 CentOS 上是 python-devel,而不是 python-dev。其他人也一样。

      【讨论】:

      • 谢谢你 - 这对安装这些依赖项很有用。它仍然没有解决问题,但越来越近了。我会更新等待...
      【解决方案6】:

      以下内容对我有用:

      sudo yum install libxml2-devel libxslt-devel python-devel

      在 AWS EC2 实例上:

      Amazon Linux AMI release 2015.09

      【讨论】:

        【解决方案7】:

        损坏的构建在过程中留下了中间文件。尝试 rm -rf /tmp/pip-build-root

        【讨论】:

          【解决方案8】:

          在我的 AWS 机器上,我有 python2.7 和 python3.4,我正在寻找为 python3.4 安装 lxml - 我发现我必须使用

          sudo yum install python34-devel
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-02-07
            • 2011-06-20
            • 1970-01-01
            • 2018-05-06
            • 2017-09-22
            • 1970-01-01
            • 2018-04-22
            • 1970-01-01
            相关资源
            最近更新 更多