无法安装lxml(Python 2.6.3,OSX 10.6 Snow Leopard)

4

我尝试执行以下命令:

easy_install lxml

但是出现了以下错误:

File "build/bdist.macosx-10.3-fat/egg/setuptools/command/build_ext.py", line 85, in get_ext_filename KeyError: 'etree'

有什么提示吗?

2个回答

7
由于Python 2.6.3版本的distutils存在不兼容的更改,旧版的setuptools中的easy_install setuptools 不再可用。您需要使用Distribute中的easy_install进行替换。请按照那里的说明进行操作,基本上是这样做:
$ curl -O http://nightly.ziade.org/distribute_setup.py
$ python distribute_setup.py

假设你的 $PATH 的第一个位置是 2.6.3 版本的 python

编辑:除了从 setuptools 迁移到 Distribute 的选项外,Python 2.6.4 即将在几周内发布,其中会在 distutils 中包含一个 workaround,以修复 setuptools 中断的问题。感谢 Tarek 提供的解决方案,以及 jbastos 提出这个问题。

进一步编辑:setuptools 本身已更新(截至 0.6c10)以解决与 2.6.3 版本的兼容性问题。


我已经做了这个,但现在我又遇到了另一个错误。
从libxml.h:53中包含的文件, 从SAX.c:12中包含: trio.h:37:19: 错误:没有找到stdio.h文件或目录
- jbastos
1
你是否已经从Xcode安装了可选的10.4 SDK?请执行命令:ls /Developer/SDKs/MacOSX10.4u.sdk/。另外,请问xml2-config --libs --prefix的输出是什么? - Ned Deily
事实上,如果您已经安装了setuptools,您可以简单地使用easy_install Distribute进行安装。Distribute的安装似乎不会触发该错误。 - Lennart Regebro
完成 - 我必须安装Xcode 10.4编译器才能够安装它。我还安装了cython和Distribute。 - jbastos

3

Ned :

Python的distutil在2.6.3版本中存在不兼容的更改

并非完全如此。API没有变化,但Setuptools覆盖了它们,并假设按特定顺序调用它们。

Lennart:

Distribute安装似乎没有触发错误

确实,这个具体的错误已经被发现并在Distribute(以及Ubuntu的setuptools包)中得到修复。


1
@Tarek:无论Setuptools是否覆盖它们都是一个好主意并不是重点。事实是它确实这样做了,而且已经有很长一段时间了,现在在2.6.3中它不起作用了,所以用户必须改变他们一直以来的做法,而且他们没有办法知道这一点。从Setuptools转移到Distribute是可以的,但是使用easy_install的用户需要知道他们必须这样做。 - Ned Deily

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接