Django部署 - 无法导入app.urls

时间:2010-05-29 04:37:11

标签: django deployment

我刚从我的开发服务器将django项目移动到部署服务器,我在部署它时遇到了一些问题。我的apache配置如下:

<Location "/">
        Order allow,deny
        Allow from all
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE project.settings
        PythonDebug On
        PythonPath "['/home/django/'] + sys.path"
</Location>

Django确实有效,因为它呈现了Django调试视图,但是我收到以下错误:

ImportError at /
No module named app.urls

以下是Django给我的所有信息:

Request Method: GET
Request URL: http://myserver.com/
Django Version: 1.1.1
Python Version: 2.6.5
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'project.app']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware')


Traceback:
File "/usr/lib64/python2.6/site-packages/django/core/handlers/base.py" in get_response
  83.                     request.path_info)
File "/usr/lib64/python2.6/site-packages/django/core/urlresolvers.py" in resolve
  218.                     sub_match = pattern.resolve(new_path)
File "/usr/lib64/python2.6/site-packages/django/core/urlresolvers.py" in resolve
  216.             for pattern in self.url_patterns:
File "/usr/lib64/python2.6/site-packages/django/core/urlresolvers.py" in _get_url_patterns
  245.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/usr/lib64/python2.6/site-packages/django/core/urlresolvers.py" in _get_urlconf_module
  240.             self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib64/python2.6/site-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)

Exception Type: ImportError at /
Exception Value: No module named app.urls

关于我为什么会收到导入错误的任何想法?

3 个答案:

答案 0 :(得分:1)

将项目目录添加到sys.path

答案 1 :(得分:1)

我的猜测是,如果您只是将您的网址配置更改为引用“project.app.urls”而不是“app.urls”,那么您的问题将会得到解决。

您似乎已在项目的settings.py文件中的INSTALLED_APPS中列出了“project.app”,但您在urls.py中引用了“app.urls”。您需要标准化并始终引用“app”,并将PythonPath更改为包含项目目录,或始终引用“project.app”。

答案 2 :(得分:0)

我建议将virtualenv与mod_python一起使用。这里有一些说明:http://mydjangoblog.com/2009/03/30/django-mod_python-and-virtualenv/

它具有解决所有路径问题的优势,但也允许非常容易地安装额外的模块(甚至其他版本的django)。