【问题标题】:Fail to install lxml in MacOS 10.8.4在 MacOS 10.8.4 中安装 lxml 失败
【发布时间】:2013-07-25 08:04:44
【问题描述】:

我在将 lxml 安装到我的 Mac OS 时遇到问题。 构建它时出现以下错误。这是我在使用pip install lxml时遇到的错误

/private/var/folders/9s/s5hl5w4x7zjdjkdljw9cnsrm0000gn/T/pip-build-khuevu/lxml/src/lxml/includes/etree_defs.h:9:10: 致命错误: 'libxml/xmlversion.h' 文件不是找到了

我已经用 brew 安装了 libxml2:

brew install libxml2
brew link libxml2 --force

我是 Mac 新手。在 Ubuntu 中,这意味着必须安装 libxml2-dev 软件包。

更新:这里是 pip.log:

"~/.pip/pip.log" 124L, 8293C requirements_set.install(install_options, global_options, root=options.root_path) 文件 “/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/req。 py", 第 1185 行,安装中 requirements.install(install_options, global_options, *args, **kwargs) 文件“/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ pip-1.3.1-py2.7.egg/pip/req.py", 第 592 行,安装中 cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False) 文件 “/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/util. py", 第 662 行,在 call_subprocess % (command_desc, proc.returncode, cwd)) InstallationError: Command /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c "import setuptools;file='/private/var/folders/9s/s5hl5w4x7zjdjkdljw9cnsrm0000gn/T/pip-build-khuevu/lxml/setup.py';exec(compile(open(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /var/folders/9s/s5hl5w4x7zjdjkdljw9cnsrm0000gn/T/pip-nsV0iT-record/install-record.txt --single-version-externally-managed 失败,错误代码 1 在 /private/var/folders/9s/s5hl5w4x7zjdjkdljw9cnsrm0000gn/T/pip-build-khuevu/lxml

有什么想法吗? 非常感谢

【问题讨论】:

  • ~/.pip/pip.log中是否有错误信息?在安装libxml2brew 之后,你在/usr/include/libxml2/libxml 中看到正确的头文件了吗? libxml2 标头肯定在您的路径上吗?
  • @ChrisP,我用日志更新了我的问题。我的机器中没有 /usr/include 文件夹。
  • 希望有人知道发生了什么。我现在唯一的建议是确保可以通过 PATH 访问 libxml2 标头。 Homebrew 应该安装到/usr/local,默认情况下在 PATH 上。你能在你的机器上找到xmlversion.h 文件,只是为了确保它在那里吗?如果你一直遇到问题,我推荐Enthought Python 发行版,它默认带有许多难以构建的工具(包括lxml)。我知道这并不能解决您的确切问题。
  • 谢谢@ChrisP。确实,即使我安装了 Brew 安装的 libxml 版本和 Xcode 安装的版本,该文件也不在编译路径中。两者都在 PATH 中。我将在下面更新答案。

标签: python macos lxml libxml2


【解决方案1】:

原来 xmlversion.h 不包含在编译路径中,即使它在 PATH 中。修改 C_INCLUDE_PATH 环境为我修复错误:

C_INCLUDE_PATH=/usr/local/Cellar/libxml2/2.9.1/include/libxml2:$C_INCLUDE_PATH

【讨论】:

  • 只是给偶然发现此问题的任何人的提示:我遇到了同样的问题,这就是解决方法。 export C_INCLUDE_PATH=/usr/local/Cellar/libxml2/2.9.1/include/libxml2:$C_INCLUDE_PATH
  • 这让我在 10.9 上编译了 lxml 和一个自安装版本的 libxml2。谢谢!
  • 如果你使用 macports:export C_INCLUDE_PATH=/usr/local/include/libxml2:$C_INCLUDE_PATH
  • 在 OS X 10.10.2 这工作(注意不同的 libxml2 版本):export C_INCLUDE_PATH=/usr/local/Cellar/libxml2/2.9.2/include/libxml2:$C_INCLUDE_PATH
  • 版本不同只是因为 Homebrew 更新了安装的包;除此之外,您正在做完全相同的事情,对我来说,这在 10.10.2 下也不起作用。
【解决方案2】:

如果您在安装 Xcode 的情况下运行 Mavericks,您也可以使用:

export C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/libxml2:$C_INCLUDE_PATH

【讨论】:

  • 使用 Xcode 6,这个命令现在是:export C_INCLUDE_PATH=/Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/包含/libxml2:$C_INCLUDE_PATH
  • 对于 OSX Yosemite 现在是 export C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2:$C_INCLUDE_PATH
  • MacOS Catalina 现在是export C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include/libxml2:$C_INCLUDE_PATH
  • @AshleyKleynhans 谢谢你,这对我安装 python ovirt sdk 很有帮助。非常感谢。
【解决方案3】:

我通过 brew 安装了 Python 和 libxml,在尝试了上述所有操作后,这对我有用:

sudo mkdir /usr/include # If /usr/include is missing
sudo ln -s /usr/local/Cellar/libxml2/2.9.2/include/libxml2 /usr/include/libxml2

注意:您需要检查自己的路径以获取最新版本。

由于标头在其他地方可用,并且正在特定目录中查找(在调用 clang 进行编译的命令中发现) - 由于某种原因没有选择备用位置,我创建了一个指向正确位置的软链接.

【讨论】:

    【解决方案4】:

    没有其他答案(导出 C_INCLUDE_PATH)对我有用。但是,将 CFLAGS 环境变量设置为内置的 OS X 10.10 libxml2 根目录效果很好。

    export CFLAGS=-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2
    

    【讨论】:

    • 这是在 10.10.2 上使用 Fish shell 为我工作的那个。我首先打开了bash shell,然后执行了此处列出的export,然后重新运行pip install lxml,最终安装成功完成。谢谢丹!
    • @NickK9 很高兴我能帮上忙!
    • 这里一样,这是唯一适用于 10.10.2 的版本
    • 在 Yosemite 10.10.2 中,我已经安装了整个 Xcode 包,我不需要任何额外的东西来让 lxml 工作。我使用 virtualenvwrapper 创建了一个虚拟环境,pip3.4 install lxml 安装时没有错误。我通过抓取 google 的主页以及在 xml 文档中搜索 xpath 测试了 lxml 安装,一切似乎都运行良好。
    【解决方案5】:
    brew install libxml2
    brew link libxml2 --force
    export C_INCLUDE_PATH=/usr/local/Cellar/libxml2/2.9.2/include/libxml2:$C_INCLUDE_PATH
    

    【讨论】:

      【解决方案6】:

      当系统是Mac EI 队长时,/usr/ 中有mkdir 的权限。也许我们不能修改这个目录?

      在 AskDifferent 上查看 What is the “rootless” feature in El Capitan, really?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-28
        • 2015-06-08
        • 2021-01-20
        • 2020-03-31
        • 2014-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多