ValueError: 无法配置过滤器'require_debug_false': 找不到模块'CallbackFilter

5 投票
6 回答
22794 浏览
提问于 2025-04-17 02:15

我正在用Django搭建一个简单的数据库,当我运行'python manage.py syncdb'的时候,出现了上面的错误。

这个问题是出在manage.py文件上,还是我的.db文件上呢?有没有什么建议可以解决这个问题?

编辑:添加完整的错误追踪信息

Traceback (most recent call last):

File "manage.py", line 14, in <module>
execute_manager(settings)
File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 252, in fetch_command
app_name = get_commands()[subcommand]
File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 101, in get_commands
apps = settings.INSTALLED_APPS
File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 139, in __init__
logging_config_func(self.LOGGING)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 776, in dictConfig
dictConfigClass(config).configure()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/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.CallbackFilter': No module named CallbackFilter

6 个回答

2

我找到了问题所在。如果我们在eclipse PyDev中创建项目,可能会导致项目结构不正确。

要解决这个问题,我们需要在命令行中使用manage.py startproject myprojectname来创建项目,然后在eclipse中创建一个新的Django项目,并指定之前通过命令行工具创建的项目文件夹。

祝好,
安东。

11

我也遇到过同样的问题。

去你的 settings.py 文件里,找到 LOGGING 的设置。

LOGGING = {

'version': 1,

'disable_existing_loggers': False,

'filters': {

    'require_debug_false': {

        '()': 'django.utils.log.CallbackFilter',

        'callback': lambda r: not DEBUG

    }

},

你看到那里的 CallbackFilter了吗?把整个 'filters' 这一项删掉。这个问题出现是因为我尝试在两个不同的 Django 版本中使用同一个 settings.py 文件。如果你用 djangoadmin.py startproject 命令创建项目,你会得到一个有效的 settings.py 文件。

7

请仔细检查一下你安装的 django 版本 1.3.1 是否是最新的,因为这是 Django 的一个 bug。

为了避免这种情况,我建议你使用 virtualenv:如何使用 virtualenv 创建多个 Django 环境

如果你已经安装了最新版本,但仍然遇到问题,请更新这个 bug:票据 #16568 require_debug_false 无法按预期工作(向后不兼容)

这个 bug 也有一个简单的解决办法:

Remove require_debug_false from global_settings.py (since it does

不工作)并强制每个人将默认的 LOGGING 代码片段复制粘贴到他们的设置中

这个回答是由 Django 开发者 andreas_pelme 在这里 提出的,这不是一个 bug,如果安装了正确版本的 Django,应该可以正常工作。

~ $ mkvirtualenv t16568-regression
New python executable in t16568-regression/bin/python
Installing setuptools............done.
Installing pip...............done.
virtualenvwrapper.user_scripts creating /Users/andreas/.virtualenvs/t16568-regression/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/andreas/.virtualenvs/t16568-regression/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/andreas/.virtualenvs/t16568-regression/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/andreas/.virtualenvs/t16568-regression/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/andreas/.virtualenvs/t16568-regression/bin/get_env_details
[t16568-regression] ~ $ pip install django==1.3.1
Downloading/unpacking django==1.3.1
  Downloading Django-1.3.1.tar.gz (6.5Mb): 6.5Mb downloaded
  Running setup.py egg_info for package django

Installing collected packages: django
  Running setup.py install for django
    changing mode of build/scripts-2.7/django-admin.py from 644 to 755

    changing mode of /Users/andreas/.virtualenvs/t16568-regression/bin/django-admin.py to 755
Successfully installed django
Cleaning up...
[t16568-regression] ~ $ cd code/
[t16568-regression] ~ $ django-admin.py startproject foo
[t16568-regression] ~ $ cd foo/
[t16568-regression] ~/foo $ python manage.py shell

In [1]: import django; django.get_version()
Out[1]: '1.3.1'

撰写回答