为什么我的Django应用程序无法与Apache / mod_python一起使用?

时间:2009-01-22 18:50:59

标签: django apache mod-python

我有Apache设置来从此目录提供http://www.mysite.com的请求:

/var/www/html/www.mysite.com

Django网站位于/var/www/html/www.mysite.com/mysite。

当我发出/ mysite / app / foo请求时出现此错误:

(大堆栈跟踪) AttributeError:'module'对象没有属性'common'

'myapp.common'是在所有django应用程序(例如'django.contrib.admin')中列出的第一个项目,位于settings.py文件中的INSTALLED_APPS中。如果我改变列出的模块的顺序,Django会在我遇到的一个应用程序的第一条路径上窒息。

Python导入路径似乎是正确的,因为它找到了mysite.settings:

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On
    PythonPath "['/var/www/html/www.mysite.com'] + sys.path"
</Location>

可能是什么问题?奇怪的是,当实际列表包含'mysite.common'时,它正在抱怨'常见':

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'mysite.common',
    ....

这是一个Django错误还是我有错误的配置?也许某些外部依赖需要添加到导入路径中?它适用于Django开发服务器。

3 个答案:

答案 0 :(得分:1)

您的mysite目录是否包含__init__.py文件?应该mark it as a package

答案 1 :(得分:0)

mysite.common是否将/var/www/html/www.mysite.com/mysite/common存储在common下?如果是这样,请尝试在mysite.common中使用INSTALLED_APPS代替{{1}}。

答案 2 :(得分:0)

我猜你有意模糊了你的实际模块名称,这很好......但是当我用与Python模块相同的名称命名我的Django站点(在你的情况下是mysite)时我遇到了这个错误存在于sys.path的其他地方。

例如,如果您创建了一个名为math的Django站点,其中有一个名为common的应用程序,则会出现此错误,因为Python系统数学模块不包含名为common的属性或子模块。

您必须将Django站点重命名为不与其他模块名称冲突。