【问题标题】:How to install libxml2 in virtualenv?如何在 virtualenv 中安装 libxml2?
【发布时间】:2011-04-20 20:46:35
【问题描述】:

我有 virtualenv--no-site-packages 选项。我在其中使用 scrapy。 Scrapy 通过import libxml2 使用libxml2。如何使用pipeasy_install在virtualenv中安装libxml2?

【问题讨论】:

    标签: virtualenv easy-install pip scrapy


    【解决方案1】:

    如果您使用 apt-get(或其他包管理器)安装了 python-libxml2,您可以使用 --system-site-packages 标志从 virtualenv 访问它。

    在创建你的 virtualenv 时,只需指定这个标志,例如:

    virtualenv --system-site-packages env
    

    这样你的 virtualenv 将继承系统范围内安装的 libxml2 包。

    【讨论】:

      【解决方案2】:

      我刚刚遇到这个问题,使用的是 Ubuntu 14.04 内核。

      我已经使用 pip 安装了 lxml。

      当我尝试在 virtualenv 中 pip install lxml --upgrade 时,它总是给我一个

      x86_64-gnu-gcc 退出 1

      我使用sudo apt-get install libssl-dev 解决了这个问题。

      【讨论】:

      • 成功的原因,可能是因为该操作还安装了libxml2-devlibxslt-dev的开发库,这是lxml的pip安装问题的最常见原因。
      【解决方案3】:

      安装 lxml 之前(在 Debian 上):

      apt-get install libxml2-dev libxslt1-dev pythonX.X-dev -y
      

      其中pythonX.Xpython2.7python2.6 或其他针刺python 版本。

      安装系统包后:

      workon %environment_name%
      pip install lxml --upgrade
      

      【讨论】:

      • 我不得不使用libxslt-dev 而不是libxslt1-dev Ubuntu 12.04 Python 2.7.3
      • 是的,Cygwin (Fedora) 也是如此,只有开发头文件称为libxml2-devellibxslt-devel。是的,请改用lxml
      【解决方案4】:

      【讨论】:

      【解决方案5】:

      或者,如果您在 Windows 上,正如我从您的问题中怀疑的那样,您需要获取 libxml2 二进制文件——scrapy 站点上有链接,并且截至 2010 年 11 月,已经编译了一个可以使用的版本与一切 - 或获取当前的主干/开发版本的scrapy,它适用于lxml2。对于 virtualenv,由于我不确定如何使用额外的二进制文件进行设置,因此后一种方法可能是最好的。我采用了后一种方法,到目前为止它对我来说完美无缺。感谢 Scrapy 的超级乐于助人的创造者 Pablo Hoffman(当我在 Scrapy 的邮件列表中发布了一个与此非常相似的问题时,他几乎在第二天就将这个更改发布到了主干)。注意:当时还没有与 python 2.7 一起工作的 libxml2 二进制文件。

      【讨论】:

        【解决方案6】:

        libxml2 是一个 C 库而不是 python 包,所以你不能使用 Pip 来安装它。通常它已经安装在几乎所有的 Linux 发行版上。如果你需要安装它只是

        sudo apt-get install libxml2

        如果出于某种原因您绝对需要进行本地安装,则需要获取并安装 .deb 包或 RPM。除非您可以下载源代码并进行构建。

        如果您可以使用通用副本但不想在路径中包含 /usr/local/,那么只需在您的 virtualenv 中进行符号链接即可。

        您可以在 http://xmlsoft.org/ 找到更多信息(比您可能想要的更多)

        Scrapy 在他们的要求中列出了它:

        • Python 2.5 或更高版本
        • Twisted 2.5.0 或更高版本
        • libxml2 2.6.28 或更高版本(包括 Python 版本)
        • pyopenssl - 仅当您想抓取安全 (HTTPS) 页面时

        【讨论】:

        • 很确定 OP 指的是名为“libxml2”的 Python 包,即“import libxml2”而不是 C 库(python 包包装)。
        猜你喜欢
        • 2018-11-25
        • 1970-01-01
        • 2012-04-26
        • 2016-08-30
        • 2020-06-18
        • 2014-02-10
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        相关资源
        最近更新 更多