【问题标题】:Installing lxml module in python在 python 中安装 lxml 模块
【发布时间】:2011-06-03 15:36:16
【问题描述】:

在运行 python 脚本时,我得到了这个错误

  from lxml import etree
ImportError: No module named lxml

现在我尝试安装 lxml

sudo easy_install lmxl

但它给了我以下错误

Building lxml version 2.3.beta1.
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' needs to be available.
ERROR: /bin/sh: xslt-config: not found

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

使用 libxslt 的构建配置

src/lxml/lxml.etree.c:4: fatal error: Python.h: No such file or directory
compilation terminated.
error: Setup script exited with error: command 'gcc' failed with exit status 1

【问题讨论】:

    标签: python lxml python-import


    【解决方案1】:

    你需要安装 Python 的头文件(debian/ubuntu 中的 python-dev 包)来编译 lxml。以及 libxml2、libxslt、libxml2-dev 和 libxslt-dev:

    apt-get install python-dev libxml2 libxml2-dev libxslt-dev
    

    【讨论】:

    • 和 libxml2-dev 和 libxslt-dev.
    • libxslt 似乎不是必需的(至少不适合我)。所以apt-get install python-dev libxml2 libxml2-dev libxslt-dev应该就够了
    • 我必须这样做才能安装 WeasyPrint,他们的 apt-get 仅针对 Debian 7 的说明不起作用。
    • libxslt 对我来说是必不可少的,没有它就无法完成 lxml 设置。
    【解决方案2】:

    只要做:

    sudo apt-get install python-lxml
    

    对于 Python 2(例如,Inkscape 需要):

    sudo apt-get install python2-lxml
    

    如果您打算从源代码安装,那么albertov's answer 会有所帮助。但除非有原因,否则不要,直接从存储库安装它。

    【讨论】:

    • 如果您使用的是虚拟环境,这不是正确的答案。
    • 对于venv,只需升级lxml pip install --upgrade lxml
    【解决方案3】:

    我解决了升级 lxml 版本的问题:

    pip install --upgrade lxml
    

    【讨论】:

      【解决方案4】:

      如果你正在运行 python3,你必须这样做:

      pip3 install lxml

      【讨论】:

      • 这对我有用!我正在使用 python3 并通过pip 为以前版本的 python 安装库。对于python3,我们应该使用pip3
      【解决方案5】:

      对于 RHEL/CentOS,运行“python --version”命令查看 Python 版本。例如。下面:

      $ python --version 
        Python 2.7.12
      

      现在运行“sudo yum search lxml”来查找python*-lxml包。

      $ sudo yum search lxml
      Failed to set locale, defaulting to C
      Loaded plugins: priorities, update-motd, upgrade-helper
      1014 packages excluded due to repository priority protections
      ============================================================================================================= N/S matched: lxml =============================================================================================================
      python26-lxml-docs.noarch : Documentation for python-lxml
      python27-lxml-docs.noarch : Documentation for python-lxml
      python26-lxml.x86_64 : ElementTree-like Python bindings for libxml2 and libxslt
      python27-lxml.x86_64 : ElementTree-like Python bindings for libxml2 and libxslt
      

      现在您可以根据您的 Python 版本选择包并运行如下命令:

      $ sudo yum install python27-lxml.x86_64
      

      【讨论】:

      • 我在 Windows 上。有什么解决办法吗?
      • 使用“python2.7.exe -m pip install --upgrade lxml”
      【解决方案6】:

      如果您在基于 Alpine 的图像上遇到此问题,请尝试以下操作:

      apk add --update --no-cache g++ gcc libxml2-dev libxslt-dev python-dev libffi-dev openssl-dev make
      

      // pip install -r requirements.txt

      【讨论】:

        【解决方案7】:

        对于 python 3,这对我有用

        sudo apt-get install python3-lxml
        

        【讨论】: