繁体   English   中英

无法在Ubuntu上安装LXML

[英]Fail to install lxml on ubuntu

我正在尝试在ubuntu 14.04上的virtualenv内部安装lxml。

$ uname -a
Linux foobar 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

如lxml文档中所指定,我已经安装了依赖项。 以下是我已安装的特定软件包:

$ dpkg-query -l | grep libxml
ii  libxml-commons-external-java              1.4.01-2build1                             all          XML Commons external code - DOM, SAX, and JAXP, etc
ii  libxml-commons-resolver1.1-java           1.2-7build1                                all          XML entity and URI resolver library
ii  libxml-parser-perl                        2.41-1build3                               amd64        Perl module for parsing XML files
ii  libxml2:amd64                             2.9.1+dfsg1-3ubuntu4.4                     amd64        GNOME XML library
ii  libxml2-dev:amd64                         2.9.1+dfsg1-3ubuntu4.4                     amd64        Development files for the GNOME XML library
ii  python-lxml                               3.3.3-1ubuntu0.1                           amd64        pythonic binding for the libxml2 and libxslt libraries
$ dpkg-query -l | grep libxslt
ii  libxslt1-dev:amd64                        1.1.28-2build1                             amd64        XSLT 1.0 processing library - development kit
ii  libxslt1.1:amd64                          1.1.28-2build1                             amd64        XSLT 1.0 processing library - runtime library
ii  python-lxml                               3.3.3-1ubuntu0.1                           amd64        pythonic binding for the libxml2 and libxslt libraries
$ dpkg-query -l | grep python-dev
ii  libpython-dev:amd64                       2.7.5-5ubuntu3                             amd64        header files and a static library for Python (default)
ii  python-dev                                2.7.5-5ubuntu3                             amd64        header files and a static library for Python (default)

当我尝试在virtualenv中安装时:

$ virtualenv venv
New python executable in venv/bin/python
Installing setuptools, pip, wheel...done.
~$ source venv/bin/activate
(venv)~$ export PATH=$PATH:/usr/lib/gcc/x86_64-linux-gnu/4.8/ # If I don't do this cc1 is not found and the build fails
(venv)~$ pip install lxml
Collecting lxml
  Using cached lxml-3.4.4.tar.gz
Building wheels for collected packages: lxml
  Running setup.py bdist_wheel for lxml
  Complete output from command /home/plasma/venv/bin/python -c "import setuptools;__file__='/tmp/pip-build-Fs3av2/lxml/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /tmp/tmpoWlzvPpip-wheel-:
  /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'
    warnings.warn(msg)
  Building lxml version 3.4.4.
  Building without Cython.
  Using build configuration of libxslt 1.1.28
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-2.7
  creating build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/__init__.py -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/builder.py -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/cssselect.py -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/sax.py -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-2.7/lxml
  creating build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/__init__.py -> build/lib.linux-x86_64-2.7/lxml/includes
  creating build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/__init__.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/builder.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/diff.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/clean.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-2.7/lxml/html
  copying src/lxml/html/defs.py -> build/lib.linux-x86_64-2.7/lxml/html
  creating build/lib.linux-x86_64-2.7/lxml/isoschematron
  copying src/lxml/isoschematron/__init__.py -> build/lib.linux-x86_64-2.7/lxml/isoschematron
  copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-2.7/lxml
  copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-2.7/lxml/includes
  copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-2.7/lxml/includes
  creating build/lib.linux-x86_64-2.7/lxml/isoschematron/resources
  creating build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/rng
  copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/rng
  creating build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl
  copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl
  copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl
  creating build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
  copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
  copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
  copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
  copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
  copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
  copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-2.7/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
  running build_ext
  building 'lxml.etree' extension
  creating build/temp.linux-x86_64-2.7
  creating build/temp.linux-x86_64-2.7/src
  creating build/temp.linux-x86_64-2.7/src/lxml
  x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/libxml2 -I/tmp/pip-build-Fs3av2/lxml/src/lxml/includes -I/usr/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -w
  x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm -o build/lib.linux-x86_64-2.7/lxml/etree.so
  x86_64-linux-gnu-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found
  compilation terminated.
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 4

  ----------------------------------------
  Failed building wheel for lxml
Failed to build lxml
Installing collected packages: lxml
  Running setup.py install for lxml
    Complete output from command /home/plasma/venv/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-Fs3av2/lxml/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-23Wgk1-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/plasma/venv/include/site/python2.7/lxml:
    /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'
      warnings.warn(msg)
    Building lxml version 3.4.4.
    Building without Cython.
    Using build configuration of libxslt 1.1.28
    running install
    running build
    running build_py
    copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-2.7/lxml/includes
    running build_ext
    building 'lxml.etree' extension
    x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/libxml2 -I/tmp/pip-build-Fs3av2/lxml/src/lxml/includes -I/usr/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -w
    x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm -o build/lib.linux-x86_64-2.7/lxml/etree.so
    x86_64-linux-gnu-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 4

    ----------------------------------------
Command "/home/plasma/venv/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-Fs3av2/lxml/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-23Wgk1-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/plasma/venv/include/site/python2.7/lxml" failed with error code 1 in /tmp/pip-build-Fs3av2/lxml
(venv)~$

但是,我确实有liblto_plugin.so:

$ find -name liblto_plugin* 2> /dev/null
./usr/lib/gcc/x86_64-linux-gnu/4.8/liblto_plugin.so
./usr/lib/gcc/x86_64-linux-gnu/4.8/liblto_plugin.so.0
./usr/lib/gcc/x86_64-linux-gnu/4.8/liblto_plugin.so.0.0.0

我知道我可以使用apt-get安装lxml,但是我试图在一个虚拟环境中安装这些软件包,以便为单元测试提供一个一致的环境。

关于如何使它起作用的任何建议将不胜感激。

当所有其他方法都失败时,我有解决方案。 转到这个网站。 http://www.lfd.uci.edu/~gohlke/pythonlibs/具有ALMOST ALL Python库,其中包含适用于每种安装类型(32位和64位)的whl文件以及2.6(包括beta 3.5)以来的所有Python版本)!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM