【问题标题】:Python3, lxml and "Symbol not found: _lzma_auto_decoder" on Mac OS X 10.9Mac OS X 10.9 上的 Python3、lxml 和“找不到符号:_lzma_auto_decoder”
【发布时间】:2014-06-28 11:17:07
【问题描述】:

我使用自制软件安装了 python 3,然后安装了 pip3 和 lxml。

下面一行

从 lxml 导入主目录

导致以下错误:

$ python3
Python 3.3.5 (v3.3.5:62cf4e77f785, Mar  9 2014, 01:12:57) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-  packages/lxml/etree.so, 2): Symbol not found: _lzma_auto_decoder
Referenced from: /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/lxml/etree.so
Expected in: flat namespace
in /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/lxml/etree.so
>>> exit();

有人知道如何解决这个问题吗?

【问题讨论】:

  • Mavericks,MacOS X 10.9.4,Darwin Kernel Version 13.3.0 对我来说同样的问题; python3.4 通过 homebrew 安装。

标签: python macos python-3.x lxml homebrew


【解决方案1】:

我已经从

中删除了所有版本的python
      /Library/Frameworks/Python.framework/Versions/

之后我使用 brew 重新安装了 python 3 并使用

重新创建了符号链接
     brew link --overwrite python3

【讨论】:

  • 嗯.. 您的解决方案删除了​​ python2.x(这些天是 python2.7)对吗?对于很多人(包括我)来说,这不是一个选择。你有更好的办法吗?
  • 我做了类似的事情并搞砸了我的系统:'(。如果你还想测试这个,请在​​删除之前进行备份。
【解决方案2】:

第二次删除 lxml 并重新安装 lxml 对我有用(奇怪,对这个解决方案不满意):

pip3.4 uninstall lxml
pip3.4 install lxml

pip3 抱怨 lxml 已经安装,使用如下命令手动删除安装文件:

rm -fr /private/var/folders/dj/saljfdsf12_sd7s89dfg9080000rb/T/pip_build_user/lxml

再说一遍:

pip3.4 install lxml

它奏效了。我无法重现原始错误消息以找到此问题的根本原因。

【讨论】:

    【解决方案3】:

    如果您使用 Homebrew 并安装了 xz,以下应该可以工作:

    STATIC_DEPS=true CFLAGS=-I/usr/local/include/lzma pip install -U lxml
    

    否则将 CFLAGS 设置为 lzma 标头所在的位置。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,

      我做了什么:

      首先,我确保我没有安装端口 py27-xml2py27-xsltpy27-lxml

      sudo port installed | grep py27
      

      我安装了端口 py27-pip 并检查了 $PATH 变量是否指向它。还安装了py27-setuptools

      $  sudo port contents py27-pip | grep /pip$
        /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip
      
      in ~/.bash_profile:
      export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
      
      $  which pip
        /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip
      

      然后我用easy_install安装了lxml,它与pip位于同一目录中

      STATIC_DEPS=true sudo easy_install-2.7 lxml
      

      正在显示构建过程:

      $  STATIC_DEPS=true sudo easy_install-2.7 lxml
      Searching for lxml
      Reading https://pypi.python.org/simple/lxml/
      Downloading 
      ....
      Building without Cython.
      Using build configuration of libxslt 1.1.29
      Building against libxml2/libxslt in the following directory: /Applications/MAMP/Library/  
      ....
      
              libxml/xmlversion.h: No such file or directory
      

      我在 $PATH 的末尾移动了 MAMP(似乎已经附带了这些库),卸载了 lxml(显示“未找到符号:_lzma_auto_decoder”错误)并重复最后一个命令:

      $ STATIC_DEPS=true sudo easy_install-2.7 -m "lxml==3.6.4"
      
      in ~/.bash_profile:
      export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}:/Applications/MAMP/Library/bin:/Applications/MAMP/Library"
      
      $  source ~/.bash_profile
      
      $  STATIC_DEPS=true sudo easy_install-2.7 lxml 
      

      这修复了virtualenv内部或外部的错误

      $  python
      Python 2.7.12 (default, Jun 29 2016, 12:46:54)
      [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
      Type "help", "copyright", "credits" or "license" for more information.
      >>> from lxml import etree
      >>>
      

      【讨论】:

        猜你喜欢
        • 2013-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 2014-02-12
        • 1970-01-01
        相关资源
        最近更新 更多