I don't know exactly how this is true (as we haven't seen the code), but I think the root of the misunderstanding in this situation may be that the file in which external methods are defined is not a standard Python module. It's a file in which you define things that look a lot like functions (and internally are converted to functions), but it doesn't have the same behavior as a standard Python module. Classes and other objects defined in the file may not addressable by the pickling machinery in the normal way. I might try moving the classes you're instantiating to a module that is on the PYTHONPATH and see what happens. Seeing your code would help too. On Fri, 2003-04-25 at 17:10, Guido van Rossum wrote:
I've spent most of the day recreating the setup from scratch, just to rule out a python problem.
I built python 2.1.3 from source, then used that python (renamed python2.1.3) to build zope from src.
I can still run from the command line, but not from zope; same error as before.
One thing I tried was to move the class definition inside the function definition (how could zope miss it? ;) ) but still no joy.
I just don't understand why zope even needs to see the class.
The function reads a record from an rdbms, unpickles and uses a few object properties to build a string. Something in zope itself seems to be preventing this.
Any other thoughts?
Are you sure you understand what you are doing? Moving a class definition used by a pickle *inside* a function is a sure recipe for disaster (the unpickling code can only find classes defined at the top level in a module).
The error message (SystemError: Failed to import class MyObject from module __main__) indicates that when the class instance was pickled, it was in the __main__ module (i.e. in the script that you passed to the python command line). There is no way that an external method can define a class in that module.
It would help if you posted your code.
--Guido van Rossum (home page: http://www.python.org/~guido/)
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )