TypeError: __name__ must be set to a string object
Frank Millman
frank at chagford.com
Mon Jan 11 03:51:13 EST 2010
Hi all
This problem is similar to one I posted recently regarding the
multiprocessing module and unicode.
However, although this one manifests itself while using the multiprocessing
module, is caused by Python itself (2.6.2).
At the top of my program I have 'from __future__ import unicode_literals'.
The relevant lines from my program read -
from multiprocessing.managers import BaseManager
class MyManager(BaseManager): pass
MyManager.register('my_function', my_function)
Inside the multiprocessing module, the following lines are executed -
@classmethod
def register(cls, typeid, ...)
[...]
def temp(...):
[...]
temp.__name__ = typeid
At this point, Python raises the exception 'TypeError: __name__ must be set
to a string object'.
I can fix it by changing my last line to -
MyManager.register(str('my_function'), my_function)
Is there any reason why __name__ cannot be a unicode object in Python 2.x?
If so, there is probably little chance of this being changed, so it is
probably not worth reporting.
Any thoughts?
Frank Millman
More information about the Python-list
mailing list