2

我想在我的 ubuntu 12.04 上安装 lxml 3.1.2。它已经通过包管理器安装了 lxml2。有没有人已经成功完成了 lxml 的双重安装?

我有点担心会混淆我的安装,主要是因为我的安装看起来很混乱!

我阅读了文档:

将 lxml 与 python-libxml2 一起使用

如果您想将 lxml 与官方的 libxml2 Python 绑定一起使用(可能是因为您的一个依赖项使用了它),您必须静态构建 lxml。否则,这两个包将干扰 libxml2 库需要全局配置的地方,这可能会产生从功能消失到两者中任何一个崩溃的任何影响。要获得静态构建,请将 --static-deps 选项传递给 setup.py 脚本,或者在 STATIC_DEPS 或 STATICBUILD 环境变量设置为 true 的情况下运行 pip,即 STATIC_DEPS=true pip install lxml STATICBUILD 环境变量的处理方式相同到 STATIC_DEPS 变量,但也被其他一些扩展包使用。

所以我准备好跑步了

STATIC_DEPS=true pip install lxml

但我犹豫了。假设这可行,我如何在 python 程序中区分我使用的是哪个 lxml?

import lxml 

会得到我哪个lxml?

现在,pip freeze lxml给了我 lxml==2.3.2

我现在不知道这是来自 pip install 还是来自 ubuntu 包......

使用 dpkg -L python-lxml,我得到了很多文件,其中包括:

> /usr/lib/python2.7/dist-packages/lxml-2.3.2.egg-info/not-zip-safe
> /usr/lib/python2.7/dist-packages/lxml-2.3.2.egg-info/SOURCES.txt
> /usr/lib/python2.7/dist-packages/lxml-2.3.2.egg-info/dependency_links.txt
> /usr/lib/python2.7/dist-packages/lxml-2.3.2.egg-info/top_level.txt
> /usr/lib/python2.7/dist-packages/lxml-2.3.2.egg-info/PKG-INFO

也:

> /usr/share/pyshared/lxml-2.3.2.egg-info
> /usr/share/pyshared/lxml-2.3.2.egg-info/not-zip-safe
> /usr/share/pyshared/lxml-2.3.2.egg-info/SOURCES.txt
> /usr/share/pyshared/lxml-2.3.2.egg-info/dependency_links.txt
> /usr/share/pyshared/lxml-2.3.2.egg-info/top_level.txt
> /usr/share/pyshared/lxml-2.3.2.egg-info/PKG-INF

当我使用 lxml 时,它来自这些(或其他地方?)中的哪一个?

神秘!

4

1 回答 1

2

您可以找出正在运行的lxml

$ python -c "import lxml; print lxml.__file__"

如果您想使用同一个包的多个版本,您可能会发现virtualenv很有用。事实上,即使没有这个条件,它也是有用的。

为了简化虚拟环境的使用,您可能希望使用virtualenvwrapper。然后你可以简单地切换:

$ workon lxml232
(lxml232) $ python -c "import lxml.etree; print lxml.etree.__version__"
2.3.2
(lxml232) $ workon lxm312
(lxml312) $ python -c "import lxml.etree; print lxml.etree.__version__"
3.1.2
于 2013-11-08T10:24:02.143 回答