【问题标题】:How do you install lxml on OS X Leopard without using MacPorts or Fink?如何在不使用 MacPorts 或 Fink 的情况下在 OS X Leopard 上安装 lxml?
【发布时间】:2010-11-19 14:42:20
【问题描述】:

过去我已经尝试过很多次,但也遇到过很多问题。有没有人有在没有 MacPorts 或 Fink 的情况下在 OS X 上安装 lxml 的方法?

最好使用完整的 1-2-3 步骤来下载和构建每个依赖项。

【问题讨论】:

    标签: python macos shell lxml osx-leopard


    【解决方案1】:

    感谢 Twitter 上的@jessenoller,我有一个适合我需要的答案 - 您可以使用静态依赖项编译 lxml,从而避免弄乱 OS X 附带的 libxml2。这对我有用:

    cd /tmp
    curl -O http://lxml.de/files/lxml-3.6.0.tgz
    tar -xzvf lxml-3.6.0.tgz 
    cd lxml-3.6.0
    python setup.py build --static-deps --libxml2-version=2.7.3  --libxslt-version=1.1.24 
    sudo python setup.py install
    

    【讨论】:

    • 'cd libs/' 步骤对我来说失败了,但它与以下两个 wget 似乎是不必要的,因为它们是作为 'setup.py build...' 的副作用而发生的无论如何都要走。
    • 嗯...可能是我第一次运行“python setup.py build --static-deps”时为我创建了 libs/ 目录但它失败了(因为我的防火墙不允许FTP) - 我实际上是通过中间服务器将 .tar.gz 文件拉下来以解决这个问题。
    • AFAIK,wget 没有 OS X 库存。请改用 curl -O
    • 这似乎在 Snow Leopard 上失败并出现错误:来自 SAX.c:15: /Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25:错误:stdarg.h:没有这样的文件或目录
    • 啊,在这里找到了 Snow Leopard 解决方案:blog.coredumped.org/2009/09/snow-leopard-and-lxml.html - 必须临时更改 /usr/bin/gcc 以指向 /usr/bin/gcc-4.0
    【解决方案2】:

    这对我有用 (10.6.8):

    sudo env ARCHFLAGS="-arch i386 -arch x86_64" easy_install lxml
    

    【讨论】:

    • 我不记得了——但是 dylib 的架构错误
    • 嗨,我在 10.6.8 上运行它,它似乎已经安装,但现在当我尝试在脚本中导入 lxml 时它仍然失败......有什么想法吗?如果这更适合转移到它自己的问题,我可以这样做。这是运行上述代码后输出的结尾:Installed /Library/Python/2.6/site-packages/lxml-2.3.3-py2.6-macosx-10.6-universal.egg Processing dependencies for lxml Finished processing dependencies for lxml,这是我尝试导入时发生的情况:ImportError: No module named lxml
    • 我提出了一个格式更好的问题here
    • @Jay 你试过chuckles 建议的:stackoverflow.com/a/7850559/179581 吗?
    • 对我来说,在 OS X 10.6.8 上它可以安装,但是安装失败了。 import lxml 有效,但 import lxml.etree 无效。相关:stackoverflow.com/questions/19557304/…stackoverflow.com/questions/17766725/how-to-re-install-lxml/…
    【解决方案3】:

    我很幸运地使用Homebrew 安装了libxml2 依赖项:

    brew install libxml2
    

    Homebrew 似乎没有libxslt 可用,但我还不需要 XSLT。 YMMV。

    一旦你有了依赖,那么通常的方法就可以正常工作了:

    pip install lxml
    

    easy_install lxml
    

    【讨论】:

    • 对我不起作用。我最终得到error: command 'gcc-4.2' failed with exit status 1。然而,上面的解决方案确实有效。
    • 在 10.6 上对我不起作用,但我设法使用 stackoverflow.com/questions/1277124/… 进行安装
    • on 10.11:错误:命令“clang”失败,退出状态为 1;解决方案是:xcode-select --install
    【解决方案4】:

    Easy_install 可以使用这个:

    STATIC_DEPS=true easy_install 'lxml>=2.2beta4'

    您可能然后需要运行,具体取决于权限;

    STATIC_DEPS=true sudo easy_install 'lxml>=2.2beta4'

    http://muffinresearch.co.uk/archives/2009/03/05/install-lxml-on-osx/

    【讨论】:

    【解决方案5】:

    在 el capitan (10.11.1) 上使用自制软件 (0.9.5) 以下对我有用:

    brew install libxml2
    LD_FLAGS=-L/usr/local/opt/libxml2/lib CPPFLAGS=-I/usr/local/opt/libxml2/include/libxml2 pip install lxml
    

    【讨论】:

      【解决方案6】:

      这在 10.8.5 对我有用

      1. 从 Mac App Store 安装 Xcode
      2. Xcode -> 首选项 -> 下载 -> 命令行工具
      3. 使用安装自制软件
      4. ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
      5. brew install libxml2
      6. sudo easy_install lxml

      这包括来自以下方面的建议:

      但我想把它编译成一个答案,而不是让 cmets 到处都是

      【讨论】:

      • 谢谢,我错过了需要安装 Xcode 命令行工具的部分。这可以通过命令行完成:xcode-select --install
      【解决方案7】:

      OS X 10.9.1 上,上述建议的答案在安装过程中出错 - 必须进行以下更改:

      cd /tmp  
      curl -o lxml-3.3.0.tgz http://lxml.de/files/lxml-3.3.0.tgz  
      tar -xzvf lxml-3.3.0.tgz  
      cd lxml-3.3.0  
      python setup.py build --static-deps --libxml2-version=2.8.0  --libxslt-version=1.1.24  
      sudo python setup.py install  
      

      【讨论】:

      • 在 10.9.2 上,这失败了:clang:错误:未知参数:'-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]
      【解决方案8】:

      我在 Snow Lepoard 上运行良好,但在升级到 Lion 后,我不得不将 gcc-4.2 符号链接到 gcc。运行 sudo env ARCHFLAGS="-arch i386 -arch x86_64" easy_install lxml 正在寻找 gcc-4.2 而不是 gcc。

      【讨论】:

        【解决方案9】:

        我正在使用 OSX 10.11 El Capitan 和 Homebrew。使用pip install lxml 会给我“致命错误:找不到'libxml/xmlversion.h'文件”和“失败,错误代码1”等等。

        根据official website,我应该使用STATIC_DEPS=true pip install lxml(如果需要,请在 pip 之前添加 sudo),这解决了我的问题。

        我在故障排除时运行了brew install libxml2brew install libxslt 来安装依赖项。我不确定这两个命令是否必要。

        【讨论】:

          【解决方案10】:

          尝试安装 Cython 并从源代码安装,easy_install 确实失败。不过,我还没有在我的 Mac 上尝试过。

          ports 版本并没有那么古老。您可以看到依赖项,其中一些必须针对我的 Linux 构建的 lxml 进行更新。

          信息 py25-lxml py25-lxml @2.1.5 (python, devel)

          lxml 是 libxml2 和 libxslt 库的 Pythonic 绑定。它是独一无二的 因为它将这些库的速度和功能完整性与 原生 Python API 的简单性,大部分兼容但优于 著名的 ElementTree API。 主页:http://codespeak.net/lxml/

          库依赖:python25、libxml2、libxslt、py25-hashlib、py25-setuptools、 py25-zlib 平台:达尔文 维护者:akitada@macports.org openmaintainer@macports.org

          【讨论】:

          • 查看 Ross 的帖子,您需要 libxml2 和 libxslt 的头文件。认为这就是为什么当我尝试从 svn 主干编译时 GCC 大吵大闹的原因。
          【解决方案11】:

          【讨论】:

          • 看起来那些指令破坏了 OS X 的内置 libxml2,我不想这样做。
          • 苹果的在/usr/lib 博客上的在/usr/local *配置步骤的参数)
          【解决方案12】:

          lxml 在pypm 存储库中是included

          $ pypm install lxml
          

          【讨论】:

            【解决方案13】:

            要安装最新版本的 libxml2 和 libxslt:

            ARCHFLAGS="-arch i386 -arch x86_64" STATIC_DEPS=true pip install lxml
            

            要安装特定版本的库:

            ARCHFLAGS="-arch i386 -arch x86_64" STATIC_DEPS=true LIBXML2_VERSION=2.7.3 LIBXSLT_VERSION=1.1.24 pip install lxml
            

            CentOS 64 位(有点题外话,但来之不易):

            CFLAGS=-fPIC STATIC_DEPS=true pip install lxml
            

            CFLAGS=-fPIC STATIC_DEPS=true LIBXML2_VERSION=2.7.3 LIBXSLT_VERSION=1.1.24 pip install lxml
            

            【讨论】:

              【解决方案14】:

              对于一个过时的 10.6.8 os x 来说,这会带来很多痛苦,但对于任何运行 Snow Leopard 的人来说都是如此!

              首先,您必须从 homebrew 安装不同版本的 libxml2 并安装 --with-python。您可以通过键入以下命令来执行此操作。

              brew update
              brew edit libxml2
              

              然后找到显示“--without-python”的行并更改为“--with-python”。

              system "./configure", "--disable-dependency-tracking",
                                    "--prefix=#{prefix}",
                                    "--with-python"
              

              现在您可以安装 libxml2。

              brew install libxml2
              

              接下来检查您在默认自制位置中新安装的 libxml2。你想找到 libxml2 配置。

              您可能会有所不同:

              "/usr/local/Cellar/libxml2/VERSION_/bin/xml2-config"

              现在使用以下命令使用新安装的 libxml2 配置而不是 Mac OS X 版本通过 pip 安装 lxml。

              ARCHFLAGS="-arch i386 -arch x86_64" pip install lxml --install-option="--with-xml2-config=/usr/local/Cellar/libxml2/2.9.1/bin/xml2-config"
              

              在我的 10.6.8 Python 2.6 上为我工作。谢谢。

              感谢这个页面向我展示了 pip --install-option ...

              http://natanyellin.com/page/4/

              【讨论】:

                【解决方案15】:

                我在/usr/local 编译它没有任何问题。

                安装 Python、libxml2、libxslt 和 lxml。您可能还需要安装 setuptools。

                【讨论】:

                • 这适用于 OS X?您使用什么前缀命令等?如何确保您安装的 libxml2 与 OS X 附带的 libxml2 不冲突?
                猜你喜欢
                • 2011-05-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-09-14
                • 2023-03-04
                • 2010-10-15
                相关资源
                最近更新 更多