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 -- http://mail.python.org/mailman/listinfo/python-list