strange error when trying to log something
Peter Otten
__peter__ at web.de
Thu Jul 23 05:29:13 EDT 2009
Ryszard Szopa wrote:
> Hi,
>
> I've recently reinstalled Python 2.6 (from DMG) on my Mac, and I am
> running into very strage errors. Namely, logging seems to be badly
> broken. When I open the interpreter through Django's manage.py shell
> and try to use logging, I get the following error:
>
>>>> logging.critical('ala')
> ------------------------------------------------------------
> Traceback (most recent call last):
> File "<ipython console>", line 1, in <module>
> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
> python2.6/logging/__init__.py", line 1416, in critical
> root.critical(*((msg,)+args), **kwargs)
> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
> python2.6/logging/__init__.py", line 1074, in critical
> self._log(CRITICAL, msg, args, **kwargs)
> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
> python2.6/logging/__init__.py", line 1142, in _log
> record = self.makeRecord(self.name, level, fn, lno, msg, args,
> exc_info, func, extra)
> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
> python2.6/logging/__init__.py", line 1117, in makeRecord
> rv = LogRecord(name, level, fn, lno, msg, args, exc_info, func)
> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
> python2.6/logging/__init__.py", line 272, in __init__
> from multiprocessing import current_process
> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
> python2.6/multiprocessing/__init__.py", line 64, in <module>
> from multiprocessing.util import SUBDEBUG, SUBWARNING
> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
> python2.6/multiprocessing/util.py", line 121, in <module>
> _afterfork_registry = weakref.WeakValueDictionary()
> File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
> python2.6/weakref.py", line 51, in __init__
> UserDict.UserDict.__init__(self, *args, **kw)
> TypeError: unbound method __init__() must be called with UserDict
> instance as first argument (got WeakValueDictionary instance instead)
>
> I was able to silence the error (and be able to work normally) by
> making UserDict.UserDict inherit from object.
>
> Any ideas what is causing the error? Before I updated Python
> everything was fine. Am I breaking a lot of things by making
> UserDict.UserDict a new style class?
>
> Thanks in advance for any insight.
>
> -- Ryszard Szopa
I have a hunch that you are triggering a reload() somewhere. Example:
Python 2.6.2 (release26-maint, Apr 19 2009, 01:58:18)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import weakref
>>> weakref.WeakValueDictionary()
<WeakValueDictionary at 140598938447312>
>>> import UserDict
>>> reload(UserDict)
<module 'UserDict' from '/usr/lib/python2.6/UserDict.pyc'>
>>> weakref.WeakValueDictionary()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/weakref.py", line 51, in __init__
UserDict.UserDict.__init__(self, *args, **kw)
TypeError: unbound method __init__() must be called with UserDict instance
as first argument (got WeakValueDictionary instance instead)
Try restarting the interpreter after any change to source files.
Peter
More information about the Python-list
mailing list