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

时间:2011-09-14 00:55:01

标签: python django

我正在使用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 个答案:

答案 0 :(得分: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?删除整个“过滤器”键。发生这种情况是因为我尝试在两个不同的Django版本中使用相同的settings.py文件。如果使用djangoadmin.py startproject,则会获得有效的settings.py文件。

答案 1 :(得分:6)

请仔细检查您所拥有的django version 1.3.1是否是最新版本,因为这是Django中的错误。

为了避免这种情况,我建议使用virtualenv:How to create multiple Django environments using virtualenv

如果您使用的是最新版本但仍然面临此问题,请更新此错误:Ticket #16568 require_debug_false does not work as intended (backward incompatible)

该错误还有一个简单的解决方案:

Remove require_debug_false from global_settings.py (since it does
     

不起作用)并强制所有人复制/粘贴默认的LOGGING片段   到他们的设置

由django developer andreas_pelme here发布的答案,这不是错误,如果安装了正确版本的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'

答案 2 :(得分:2)

我找到了问题。如果我们使用 eclipse PyDev 并将项目创建到eclipse中 - 我们的项目结构不正确。

要解决这个问题,我们需要在命令行中使用manage.py startproject myprojectname创建项目,并在eclipse中创建新的Django项目,并通过命令行工具指定已创建项目的旧项目。

祝你好运, 安东。

答案 3 :(得分:1)

您是否尝试过重新安装django?如果没有,我认为这是开始使用虚拟环境的一个很好的机会。

中有一个名为CallbackFilter的类
/usr/local/lib/python2.6/dist-packages/django/utils/dictconfig.py

您无法读取它的事实意味着要么不存在,要么您的python_path没有很好地配置,但是因为您可以阅读其他不太可能的django内容。

答案 4 :(得分:1)

我有同样的问题,在我的情况下,这是由于使用sudo运行manage.py,忽略虚拟环境。在this thread处有一个解决方案。

答案 5 :(得分:1)

我遇到了同样的问题。我会说问题的根源是你的“setting.py”是用你当前版本的不同Django版本创建的。如果你不知道你有什么版本,我建议你开始一个新项目,以便在你当前的Django版本中使用setting.py。

如果你知道用于创建项目的Django版本,可以使用下一个命令(例如Django 1.4.5版)轻松地再次安装它。

pip install Django==1.4.5

我希望这可以提供帮助。