我目前正在尝试使用django开发一个相当简单的应用程序,但我在开头几乎停留:我的项目名为“kundencenter”,我的应用程序是“customermgr”。
项目和应用都有urls.py
,项目的urls.py
包含应用:
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^customer/', include('kundencenter.customermgr.urls')),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
)
但是,当我现在尝试访问customer/
时,我会看到ImportError
:
Django Version: 1.4
Exception Type: ImportError
Exception Value:
No module named customermgr.urls
Exception Location: /usr/local/lib/python2.7/dist-packages/django/utils/importlib.py in import_module, line 35
Python Executable: /usr/bin/python
Python Version: 2.7.1
Python Path:
['/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'.',
'/var/www/kundencenter',
'/var/www']
正如你所看到的,我已经对PYTHONPATH
感到困惑,但无济于事。您可能已经猜到,该项目位于/var/www/kundencenter
。我还检查过创建了__init__.py
个文件,它们是(它们是空的)。当我运行manage.py runserver
并将Apache与mod_wsgi一起使用时,会出现错误。
我的智慧结束了。有没有人知道如何摆脱这个错误?
答案 0 :(得分:2)
您是否尝试过没有项目名称?
url(r'^customer/', include('customermgr.urls')),
而不是
url(r'^customer/', include('kundencenter.customermgr.urls')),
顺便说一句,如果不是这样的话,用尽可能短的路径导入模型(或其他所有东西)。 如果您在同一个应用程序中导入模型,则juste使用“从模型导入X,Y,Z”。
如果您必须从任何其他应用程序导入模型,函数,类等,请使用“from my_other_app.models import X,Y,Z”,但不要包含您的项目名称。
如果有一天,你想要为另一个django项目回收你的应用程序,它将为你带来一些痛苦:)
答案 1 :(得分:1)
您应该使用PIP在虚拟环境下构建所有内容,包括安装Django以及您需要的所有其他模块/库。然后你不必担心搞乱Python路径。尝试谷歌搜索Python + Django + Virtualenv + PIP并阅读一些推荐的设置。 真的 简化整个安装和配置过程,而且所有内容都是自包含的,您可以使用Fabric或其他部署工具轻松部署。
祝你好运,我希望有所帮助。
答案 2 :(得分:0)
您可能在Python模块搜索路径上的其他位置安装了一个模块/软件包,该搜索路径首先被拾取。
在WSGI脚本文件的开头添加:
import kundencenter
print kundencenter.__file__
并查看从哪里获取。
答案 3 :(得分:0)
将您的PYTHONPATH设置为:
['/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/var/www/kundencenter']
和urlpatterns:
urlpatterns = patterns('',
url(r'^customer/', include('customermgr.urls')),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
)
我不知道你的目录结构是什么,所以这是我最好的gess。