ValueError: 无法配置过滤器'require_debug_false': 无法解析'django.utils.log.RequireDebugFalse': 没有名为RequireDebugFalse的模块
我正在尝试把MySQL数据库连接到Django框架。我看了很多教程,但还是没法解决我的问题。下面是我在运行 python manage.py syncdb
时遇到的情况:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 429, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 252, in fetch_command
app_name = get_commands()[subcommand]
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 101, in get_commands
apps = settings.INSTALLED_APPS
File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 139, in __init__
logging_config_func(self.LOGGING)
File "/usr/lib/python2.7/logging/config.py", line 777, in dictConfig
dictConfigClass(config).configure()
File "/usr/lib/python2.7/logging/config.py", line 562, in configure
'filter %r: %s' % (name, e))
ValueError: Unable to configure filter 'require_debug_false': Cannot resolve 'django.utils.log.RequireDebugFalse': No module named RequireDebugFalse
我在Ubuntu系统上使用虚拟环境。
日志信息如下:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
3 个回答
0
我也遇到过同样的问题,后来在终端里用这个命令解决了。
user@computer:~$ source /your_django_directory/bin/activate
执行完这个命令后,终端的显示会变成这样。
(your_django_directory)user@computer:~$ source /your_django_directory/bin/activate
然后再试着运行syncdb命令。
0
在我的系统上(Debian Wheezy),安装python-django这个软件包后,会在"/usr/bin/django-admin"这个位置生成一个文件。
注意,这个文件名后面没有“.py”。如果你想从虚拟环境中运行django-admin,你可以输入完整路径,或者在名字后面加上“.py”(也就是django-admin.py)。你也可以两者都用。
(TRIAL)bjb@bjb-pc:~/projects/python/django$ which django-admin
/usr/bin/django-admin
(TRIAL)bjb@bjb-pc:~/projects/python/django$ which django-admin.py
/usr/local/pythonenv/TRIAL/bin/django-admin.py
(TRIAL)bjb@bjb-pc:~/projects/python/django$ echo $PATH
/usr/local/pythonenv/TRIAL/bin:/home/bjb/bin:/usr/bin/mh:/bin:/usr/bin:/usr/local/bin:/usr/games:/opt/arm-2009q1/bin
虽然虚拟环境的bin目录优先级更高,但因为在那个目录里没有“django-admin”这个文件,所以系统会使用/usr/bin/django-admin这个文件。
关键是,如果你的项目是用错误的django-admin创建的,那么当你尝试执行syncdb或者其他需要使用虚拟环境中可执行文件的操作时,就会遇到错误——就像我刚刚遇到的那样。
6
从错误信息来看,很明显你并没有在虚拟环境中使用Django版本;而是使用了安装在 /usr/local/lib/python2.7/dist-packages/django/
里的版本。
你的配置是针对Django 1.4的,但你现在使用的Ubuntu系统上运行的是Django 1.3或更早的版本。
你需要确保你使用的是一个配置为不带系统包的虚拟环境。