imputil.py, is this a bug ?

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sat Nov 7 03:20:01 CET 2009


En Fri, 06 Nov 2009 18:33:37 -0300, Stef Mientki <stef.mientki at gmail.com>  
escribió:

> I get an error compiling with pyjamas, in the standard module imputil,  
> _import_top_module

Note that imputil is undocumented in 2.5, deprecated in 2.6 and  
definitively gone in 3.0

> AttributeError: 'unicode' object has no attribute 'import_top'
>
>     def _import_top_module(self, name):
>         # scan sys.path looking for a location in the filesystem that  
> contains
>         # the module, or an Importer object that can import the module.
>         for item in sys.path:
>             if isinstance(item, _StringType):
>                 module = self.fs_imp.import_from_dir(item, name)
>             else:
>                 module = item.import_top(name)
>             if module:
>                 return module
>         return None
>
> It seems that elements of sys.path can be of the type unicode
> so by adding the next 2 lines, everything works ok.
>             elif isinstance ( item, basestring ) :
>                 module = self.fs_imp.import_from_dir ( str(item), name)
>
> is this a bug ?
> (I'm using Python 2.5.2 on Windows )

Yes, seems to be a bug. But given the current status of imputil, it's not  
likely to be fixed; certainly not in 2.5 which only gets security fixes  
now.

I cannot test it at this moment, but I'd use the unicode item directly  
(that is, self.fs_imp.import_from_dir(item, name)). Or perhaps  
item.encode(sys.getdefaultfilesystemencoding()). str(item) definitively  
won't work with directory names containing non-ascii characters.

Why are you using imputil in the first place?

-- 
Gabriel Genellina




More information about the Python-list mailing list