我以前写过一个脚本
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
不知道为什么,如果有什么不同,但它是按预期工作。
解决了这个问题。
我安装的一个软件似乎破坏了我的python路径。我在终端中调用python时使用的python是软件安装的python,我的脚本调用的python是安装在系统上的python。
所以,我刚刚从bash的path变量中删除了软件的python路径。
在edit中引用的解决方案使用xml.etree而不是lxml.etree并不是更好的方法,因为这些模块已经知道了incompatibilities,而且主要是因为lxml肯定更为optimised。
使用VirtualEnvironment是使环境变得干净的一个好方法:
然后,使用/bin/python执行脚本。 这种方法的优点是:
作为一个参考,实现这一点的一个更强大但稍微复杂的方法是使用buildout,但是如果您只想执行一个简单的单文件脚本,它看起来就像用火箭筒猎杀苍蝇。
我在PyCharm做测试时遇到了这个问题。我可以在使用终端和虚拟环境时导入lxml,但使用相同的虚拟环境运行测试会导致ImportError。
在我的例子中,从lxml 3.3.5升级到4.2.5解决了这个问题。
相关问题 更多 >
编程相关推荐