2009-09-03 85 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 

可能会或可能不会帮助你...