Django:奇怪的导入错误
我正在部署一个(专有的)Django应用程序(支持很差;-))。我需要做的就是设置一个新的Django项目,并实现这个应用的URL配置。所以我的URL配置如下:
1 from django.conf.urls.defaults import patterns, include, url
2
3 urlpatterns = patterns('',
4 url(r'^', include('ap01.urls')),
5 )
这个应用程序也已经添加到我的INSTALLED_APPS设置中。
我可以通过运行(./manage.py validate)来验证,一切正常。当我运行这个应用时,出现了以下导入错误:
ImportError at /
No module named ap01.urls
这个模块在Django报告的Python路径中是存在的,当我手动导入这个urls模块时,一切都能正常工作,也就是说:
./manage.py shell
__import__('ap01.urls')
我和QA(质量保证)以及开发服务器的设置进行了比较,一切看起来都正确。唯一不同的是Python的版本(QA和开发上是2.6,而这个新机器上是2.7)。
1 个回答
2
我会这样调试这个问题:
首先,你需要知道是在哪里出现了导入错误(ImportError)。然后可以添加一些检查,比如:
import sys
raise Exception(sys.path)
- 在你的系统路径(sys.path)中,“ap01”上面的目录是否存在?
- 目录“ap01”里面是否有一个叫做
__init__.py
的文件? - 你的Python解释器(也就是报错的那个)是以什么用户身份运行的?可以试试这个命令:
import os, sys; assert False, (os.getuid(), sys.path)
- 也许这个用户没有足够的权限去读取文件?如果你使用的是类Unix的操作系统,可以用“su”命令切换到这个用户,然后尝试读取文件:
less ...../ap01/...py