8

我前段时间写了一个脚本,其中包含

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

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

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

4

6 回答 6

7

您在编辑中引用的解决方案使用 xml.etree 而不是 lxml.etree 并不是更好的方法,因为这些模块已知不兼容,主要是因为 lxml 肯定更加优化

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

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

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

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

作为参考,实现此目的的一种更强大但稍微复杂一点的方法是使用buildout,但如果您只想执行一个简单的单文件脚本,它看起来就像用火箭筒打苍蝇一样。

于 2013-01-18T18:13:03.633 回答
4

解决了这个问题。

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

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

于 2013-01-19T15:38:57.487 回答
0

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

在我的情况下,从 lxml 3.3.5 升级到 4.2.5 解决了这个问题。

于 2018-09-19T17:02:52.920 回答
0

这可能与您的 Python 环境有关。以下是三种故障排除方法,从最简单到最麻烦

1)通过pip重新安装

pip uninstall lxml
pip install lxml

2)通过IDE重新安装

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

3)重新创建virtualenv

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

于 2020-06-04T18:27:13.880 回答
0

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

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

conda remove lxml

pip install lxml
于 2021-01-05T13:08:03.650 回答
-2

对于 Python 3.6,这是非常棘手的。

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

于 2017-06-08T09:40:27.547 回答