2009-09-03 89 views
2

在我的Django項目中,以下代碼行引發了一個ImportError:「No module named elementtree」。在Django中導入python模塊時出錯

from elementtree import ElementTree 

然而,模塊安裝(即,我可以運行一個交互式蟒殼,並鍵入而沒有任何的ImportError,準確的線),以及含有該模塊的目錄是在PYTHONPATH。但是,當我訪問瀏覽器中的任何頁面時,它以某種方式無法找到該模塊,並引發ImportError。什麼可能導致這個?

+2

Django是否使用與您在shell中使用的相同的Python版本? – 2009-09-03 19:19:53

+0

好問題。我如何找出哪個python django正在使用? – raviv 2009-09-03 19:25:41

回答

5

可以導入elementtree Django的外殼內:

python manage.py shell 

假設你有多個版本的Python,不知道哪一個是用於運行您的網站,以下內容添加到您的視圖,推動python_ver到您的模板,它會告訴你的Python版本使用的是:

import sys 
python_ver = sys.version 

您也可以明確地添加你以編程ElementTree的路徑210:

import sys 
sys.path.append('path to where elementtree resides') 
+1

謝謝!用'sys.path.append()'手工添加元素樹到python路徑中,這個技巧。 – raviv 2009-09-03 20:00:30

+0

如果你只是黑客入侵,這可能會起作用。如果這是爲了生產代碼,那麼如果你以這種方式攻擊sys.path,你的QA人就不會喜歡你。相反,你可能想看看virtualenvs,它可以讓你安裝一個特定版本的django,elementtree和其他python模塊,但沒有太多混淆的機會。 – Andrew 2012-03-07 00:22:26

0

進入您的安裝目錄

例子:

C:\Python26\Lib\site-packages

,並檢查是否都ElementTree的和Django的都在那裏。

如果他們都不在那裏,那麼你可能有不同版本的Python的多個安裝目錄。


在任何情況下,你可以通過運行該命令解決您的問題:

python setup.py install

運行它兩次,一次下載Django的內部,一旦下載的ElementTree裏面。它會將兩種下載安裝到當前的默認Python中。

參考文獻:

+0

elementtree位於我的安裝目錄($ HOME/lib/python /)中,但是我認爲我有多個安裝目錄(所有這些都在PYTHONPATH上,但我不知道是否需要做任何其他操作)。我也使用本地python('哪個python'給我$ HOME/local/bin/python,而不是通常的/ usr/bin/python)。 – raviv 2009-09-03 19:33:46

+0

增加了一些關於如何解決的更多細節。 – 2009-09-03 19:37:37

1

我也碰到跨平臺問題,其中ElementTree的是可以從不同系統上的不同的模塊......這結束了工作對我來說:

try: 
    import elementtree.ElementTree as ET 
except: 
    import xml.etree.ElementTree as ET 

可能會或可能不會幫助你...