在python中导入lxml的错误

时间:2013-01-09 16:24:45

标签: python lxml

我前几次写了一个包含

的脚本
from lxml import etree
但是,不幸的是它不再起作用了。 有疑问我检查安装:

sudo apt-get install python-lxml
sudo pip install lxml
sudo apt-get install libxml2-dev
sudo apt-get install libxslt1-dev

我检查了它是否可能是我的python版本:

me@pc:~$ python
Python 2.7.3 (default, Sep 14 2012, 14:11:57) 
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named lxml

我的操作系统是ubuntu 12.04.1 LTS with Python 2.7.3。

一切似乎都很好。我看不出可能出现什么问题。

解决:

最后使用

导入etree
from xml import etree

不知道为什么以及是否存在差异但是它按预期工作。

6 个答案:

答案 0 :(得分:6)

您在编辑中引用的解决方案,使用xml.etree而不是lxml.etree并不是更好的方法,因为这些模块已知incompatibilities,主要是因为lxml肯定更多{{3 }}

提供干净环境的好方法是使用 virtualenv

$ virtualenv myproject
$ cd myproject
$ ./bin/pip install lxml # Repeat this with other dependencies
[wait for download and compiling]

然后,使用 ./ bin / python 来执行您的脚本。 这种方法的优点是:

  • 您的系统和项目之间可以有不同版本的依赖关系
  • 即使您破坏了虚拟环境中的所有内容,也不会破坏系统的其余部分
  • 您不需要root权限即可进行安装

作为参考,实现这一目标的更强大但更复杂的方法是使用optimised,但如果您只想执行简单的单文件脚本,它看起来就像用火箭筒狩猎苍蝇一样。

答案 1 :(得分:4)

解决了这个问题。

似乎我安装的软件搞砸了我的python路径。我在终端中调用python时使用的python是由软件安装的python,我的脚本调用的是我系统上安装的那个。

所以,我刚刚从bash的路径变量中删除了软件的python路径。

答案 2 :(得分:0)

在PyCharm中运行测试时遇到了这个问题。使用终端和虚拟环境时,我可以导入lxml,但是使用相同的虚拟环境运行测试会导致ImportError。

就我而言,从lxml 3.3.5升级到4.2.5可以解决此问题。

答案 3 :(得分:0)

这可能与您的Python环境有关。这是三种故障排除方法,从最小到最繁琐

1)通过pip重新安装

pip uninstall lxml
pip install lxml

2)通过IDE重新安装

  • 从终端(pip uninstall lxml)卸载
  • 在python文件的开头添加from lxml import etree
  • 让我的IDE(PyCharm)显示丢失的导入错误
  • 将鼠标悬停在错误上,然后通过错误修复弹出窗口(不是终端)从IDE安装它

3)重新创建virtualenv

假设您在虚拟环境中工作(如果没有,请为您和家人感到羞耻):删除并创建一个新环境。

答案 4 :(得分:0)

如果您正在处理 conda,我会“发现,我的 conda install lxml 在“成功”安装后无法正常工作

尝试使用 pip 卸载并重新安装,这对我有用

conda remove lxml

pip install lxml

答案 5 :(得分:-2)

对于Python 3.6,它非常棘手。

我遇到同样的问题,并尝试安装最新版本,lxml 3.8。但我仍然得到错误。然后我使用lxml 3.7.3,然后就可以了。