ValueError: 无法配置过滤器'require_debug_false': 无法解析'django.utils.log.RequireDebugFalse': 没有名为RequireDebugFalse的模块

4 投票
3 回答
8715 浏览
提问于 2025-04-17 18:37

我正在尝试把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或更早的版本。

你需要确保你使用的是一个配置为不带系统包的虚拟环境。

撰写回答