0

我有 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' 是settings.py 文件中 INSTALLED_APPS 中所有 django 应用程序(例如 'django.contrib.admin')之后列出的第一项。如果我更改列出的模块的顺序,Django 会在它遇到的我的一个应用程序的第一个路径上阻塞。

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

<位置“/mysite/”>
    SetHandler python 程序
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    Python调试开启
    PythonPath "['/var/www/html/www.mysite.com'] + sys.path"
</位置>

可能是什么问题呢?奇怪的是,当实际列表包含“mysite.common”时,它却在抱怨“common”:

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

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

4

3 回答 3

1

您的mysite目录是否包含__init__.py文件?它应该将其标记为 package

于 2009-01-22T19:18:34.677 回答
0

I'm guessing you're obscuring your actual module name intentionally, which is fine... but I got this error when I had named my Django site (mysite, in your case) with the same name as a Python module that exists elsewhere in sys.path.

For example, if you created a Django site called math, with an app called common inside of it, you'd get this error because the Python system math module doesn't contain an attribute or submodule named common.

You'll have to rename your Django site to not collide with the other module name.

于 2009-02-11T22:49:03.720 回答
0

mysite.common包裹是否存放在下/var/www/html/www.mysite.com/mysite/common?如果是这样,请尝试使用common而不是mysite.commonin INSTALLED_APPS

于 2009-02-11T02:19:52.600 回答