python中lxml的导入错误

2024-05-17 17:58:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我以前写过一个脚本

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

我的操作系统是Ubuntu12.04.1LTS和Python2.7.3。

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

已解决:

最后导入etree

from xml import etree

不知道为什么,如果有什么不同,但它是按预期工作。


Tags: installpipfromdevimport版本脚本get
3条回答

解决了这个问题。

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

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

在edit中引用的解决方案使用xml.etree而不是lxml.etree并不是更好的方法,因为这些模块已经知道了incompatibilities,而且主要是因为lxml肯定更为optimised

使用VirtualEnvironment是使环境变得干净的一个好方法:

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

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

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

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

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

在我的例子中,从lxml 3.3.5升级到4.2.5解决了这个问题。

相关问题 更多 >