2013-01-09 179 views
7

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版本:

[email protected]:~$ 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的LTS 12.04.1使用Python 2.7.3。

一切似乎都很好。我看不出有什麼問題。

解決:

最後導入etree與

from xml import etree 

不知道是什麼原因,如果是有區別的,但它工作正常。

+1

這就是'virtualenv'的原因。 –

+0

'pip install lxml'的結果是什麼? - 編譯它所需的庫看起來很奇怪,它正在追趕它... –

+0

'sudo pip install lxml'的輸出是什麼?另外,如果你想用'pip'來安裝'lxml',你需要安裝'python-dev'軟件包。 –

回答

4

解決了這個問題。

看來,我安裝的軟件搞砸了我的Python路徑。我在終端中調用python時使用的python是由軟件安裝的,我的腳本調用的是我的系統上安裝的那個。

所以,我只是從bash的路徑變量中刪除了軟件的python路徑。

+0

是的,這似乎也是我的問題。在我的情況下,它與MAMP衝突。 'sudo easy_install lxml'顯示:'在以下目錄中針對libxml2/libxslt構建:/ Applications/MAMP/Library/lib .......... /tmp/easy_install-KzJaeI/lxml-3.2.5 /src/lxml/includes/etree_defs.h:9:10:致命錯誤: '找不到libxml/xmlversion.h'文件。命令'echo $ PATH'顯示'$ echo $ PATH /Applications/MAMP/Library/bin:/Applications/MAMP/bin/php/php5.5.26/bin:/Users/admin/.composer/vendor/bin:/opt/local/bin:/ opt/local/sbin:/ usr/bin:/ bin:/ usr/sbin:/ sbin:/ usr/local/bin – r3x

6

編輯中引用的解決方案使用xml.etree而不是lxml.etree並不是更好的方法,因爲這些模塊已知incompatibilities,主要因爲lxml肯定更多optimised

一個很好的方法,使一個乾淨的環境中可用的方法是使用的virtualenv

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

然後,使用./bin/python執行腳本。 這種方法的優點是:

  • 你可以有不同的版本,您的系統和項目之間的依賴關係的
  • 即使你打破在虛擬環境中的一切,你會不會損害您的系統
  • 其餘
  • 你不需要root權限進行安裝

作爲參考,一個更強大,但稍微複雜的方式來實現這一目標是使用buildout,但它可以看起來像打獵flie如果你只是想執行一個簡單的單文件腳本,那麼你就可以使用火箭筒了。

+0

我知道虛擬env和pip是有用的,但正如我所說的,爲我的每個腳本創建虛擬env不是目的。看到我的答案,瞭解我的問題是什麼! – user1254498

-1

對於Python 3.6,它非常棘手。

我有同樣的問題,並嘗試安裝最新版本,lxml 3.8。但我仍然得到錯誤。然後我使用lxml 3.7.3,然後就可以了。

+0

爲什麼不從xml包導入?這工作正常:-) –

+0

謝謝damonxu,同樣在這裏。 lxml 3.8導入錯誤,卸載後3.8和安裝3.7.3工作正常 – WoltjerD