我有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开发服务器。
答案 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站点重命名为不与其他模块名称冲突。