在 Django 中导入 python 模块时出错
Posted
技术标签:
【中文标题】在 Django 中导入 python 模块时出错【英文标题】:Error importing a python module in Django 【发布时间】:2010-11-25 09:54:16 【问题描述】:在我的 Django 项目中,以下行引发 ImportError:“No module named elementtree”。
from elementtree import ElementTree
但是,该模块已安装(即,我可以运行交互式 python shell,并键入没有任何 ImportError 的确切行),并且包含该模块的目录位于 PYTHONPATH 上。但是当我在浏览器中访问任何页面时,它以某种方式找不到模块,并抛出 ImportError。这可能是什么原因造成的?
【问题讨论】:
Django 使用的 Python 版本是否与您在 shell 中使用的相同? 好问题。如何找出正在使用的 python django? 【参考方案1】:你能在 django shell 中导入elementtree
吗:
python manage.py shell
假设您有多个 python 版本并且不知道使用哪个版本来运行您的站点,请将以下内容添加到您的视图中并将python_ver
推送到您的模板中,它将显示您正在使用的 Python 版本:
import sys
python_ver = sys.version
您还可以在 settings.py
中以编程方式显式添加 elementtree 的路径:
import sys
sys.path.append('path to where elementtree resides')
【讨论】:
谢谢!使用sys.path.append()
手动将 elementtree 添加到 python 路径就可以了。
如果你只是在破解这可能会奏效。如果这打算成为生产代码,那么如果您以这种方式破解 sys.path,您的 QA 人员将不会喜欢您。相反,您可能想看看 virtualenvs,它可以让您安装特定版本的 django、elementtree 和其他 python 模块,而不会造成很多混淆。【参考方案2】:
我也遇到过跨平台问题,ElementTree 可以从不同系统上的不同模块中获得......这最终对我有用:
try:
import elementtree.ElementTree as ET
except:
import xml.etree.ElementTree as ET
可能对你有帮助,也可能没有帮助......
【讨论】:
【参考方案3】:进入你的安装目录
例子:
C:\Python26\Lib\site-packages
并检查 elementtree 和 django 是否都在其中。
如果它们都不存在,那么您可能有多个安装目录用于不同版本的 Python。
无论如何,您都可以通过运行以下命令来解决您的问题:
python setup.py 安装
运行两次,一次在 django 的下载中,一次在 elementtree 的下载中。它将两个下载安装到您当前的默认 python 中。
参考文献:
Installation documentation for ElementTree Installation documentation for Django【讨论】:
elementtree 在我的安装目录($HOME/lib/python/)中,但我想我有多个安装目录(都在PYTHONPATH上,但不知道是否需要做除此之外的任何事情)。我也在使用本地 python(which python
给我 $HOME/local/bin/python,而不是通常的 /usr/bin/python)。
添加了更多关于如何修复的细节。以上是关于在 Django 中导入 python 模块时出错的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中导入 fastparquet 时 snappy 出错
在 Ubuntu 上的 python 中导入 OOSheet 时出错