problem with "ImportError: No module named..." and sockets
Daniel
daniel.watrous at gmail.com
Wed Oct 1 13:55:51 EDT 2008
On Sep 30, 5:49 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:
> En Tue, 30 Sep 2008 19:44:51 -0300, Daniel <daniel.watr... at gmail.com>
> escribió:
>
>
>
> > On Sep 30, 4:17 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> > wrote:
> >> En Tue, 30 Sep 2008 18:38:19 -0300, Daniel <daniel.watr... at gmail.com>
> >> escribió:
>
> >> > [BEGIN CODE]
> >> > #!/usr/bin/python
> >> > import SocketServer
> >> > import os, sys
> >> > newpath = os.path.normpath( os.path.join( __file__, "../../.." ))
> >> > sys.path.insert(0, newpath)
>
> >> > from pop.command.UpdateCommand import *
> >> > import cPickle
>
> >> > Traceback (most recent call last):
> >> > [...]
> >> > ImportError: No module named UpdateCommand
>
> >> > I import the module at the top of the file server.py, but it doesn't
> >> > throw the ImportError until it tries to unpickle.
>
> >> Notice that you don't import the UpdateCommand module - you import all
> >> names defined inside it instead. It's not the same thing.
> >> Seehttp://effbot.org/zone/import-confusion.htm
>
> >> --
> >> Gabriel Genellina
>
> > Thank you Gabriel,
>
> > The class inside that module has the same name, UpdateCommand. Since
> > this is the object that was pickled, it should be available to the
> > unpickle command. I already understood the difference between import
> > methods and I think I'm covered. I did just try "import
> > pop.command.TesterUpdateCommand" instead and I get the same error.
>
> (TesterUpdateCommand != UpdateCommand...)
>
> In your *pickling* code, just before pickling the object, see what you get
> from this:
>
> cls = obj.__class__
> print cls.__module__
> print cls.__name__
>
> Suppose you get "SomeModuleName" and "SomeClassName". Then, in your
> *unpickling* environment, this must succeed:
>
> import SomeModuleName
> cls = SomeModuleName.SomeClassName
>
> If not, you should rearrange things (on both sides, probably) to make the
> reference work. This is basically what pickle does.
>
> Looks like the module lives in a package - make sure you import the
> *package* both when pickling and unpickling. The sys.path manipulation
> looks suspicious.
>
> --
> Gabriel Genellina
This turned out to be a problem with PyScripter. When I open the same
files in Komodo they work fine.
Sorry for the trouble.
More information about the Python-list
mailing list