Pyrex / py2exe import interaction

Clark C . Evans cce at clarkevans.com
Tue Jul 30 22:52:20 EDT 2002


On Wed, Jul 31, 2002 at 12:45:32PM +1200, Greg Ewing wrote:
| > Hello.  I'm having difficulty with using a combination
| > of pyrex and py2exe; the problem occurs when the module
| > compiled with pyrex has an "import".
| 
| I'll look into this if I can, but I don't know if
| there's much I can do, as I don't have easy access
| to a Windows machine to debug this sort of thing on.

I've tracked it down a bit further.  The _import_one is being
called on 'testmod', which is the binary module compiled by
pyrex.  Then, in some override code for "get_code" which appears
to be provided as a dynamically generated string, it calls 
_import_hook on the following items: imp, marshal, sys, and
then finally string.  In the cases of imp, marshal, and sys
the 'globals' parameter of _import_hook is a mapping.  But 
then somehow, when it goes to import string, globals is
actually a module object instead of a mapping.

So, somehow the get_code operator provided somehow is
passing a module to _import_hook instead of a mapping...

Traceback (most recent call last):
  File "<string>", line 1, in ?
  File "imputil.pyc", line 103, in _import_hook
  File "<string>", line 52, in _import_top_module
  File "imputil.pyc", line 216, in import_top
  File "imputil.pyc", line 267, in _import_one
  File "<string>", line 163, in get_code
  File "imputil.pyc", line 89, in _import_hook
  File "imputil.pyc", line 152, in _determine_import_context
AttributeError: 'module' object has no attribute 'get'

Here is my trace that I generated...

imputil.py#085 IN _import_hook(fqname='testmod',globals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None},locals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None},fromlist=('go',))

imputil.py#088 _determine_import_context(globals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None})

imputil.py#151 {'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None}.get('__importer__')

imputil.py#102 _import_top_module('testmod')

imputil.py#215 _import_one(None,'testmod','testmod')

imputil.py$266 get_code(None,'testmod','testmod') 

imputil.py#215 _import_one(None,'testmod','testmod')

imputil.py$266 get_code(None,'testmod','testmod') 

imputil.py#085 IN _import_hook(fqname='imp',globals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None},locals=None,fromlist=None)

imputil.py#088 _determine_import_context(globals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None})

imputil.py#151 {'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None}.get('__importer__')

imputil.py#085 IN _import_hook(fqname='marshal',globals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None},locals=None,fromlist=None)

imputil.py#088 _determine_import_context(globals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None})

imputil.py#151 {'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None}.get('__importer__')

imputil.py#085 IN _import_hook(fqname='sys',globals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None},locals=None,fromlist=None)

imputil.py#088 _determine_import_context(globals={'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None})

imputil.py#151 {'__builtins__': <module '__builtin__' (built-in)>, '_extensions_mapping': {'testmod': ('testmod.pyd', ('.pyd', 'rb', 3))}, '__name__': '__main__', '_ModuleType': <type 'module'>, '__doc__': None}.get('__importer__')

imputil.py#085 IN _import_hook(fqname='string',globals=<module 'testmod' (built-in)>,locals=None,fromlist=[])

imputil.py#088 _determine_import_context(globals=<module 'testmod' (built-in)>)

imputil.py#151 <module 'testmod' (built-in)>.get('__importer__')
Traceback (most recent call last):
  File "<string>", line 1, in ?
  File "imputil.pyc", line 103, in _import_hook
  File "<string>", line 52, in _import_top_module
  File "imputil.pyc", line 216, in import_top
  File "imputil.pyc", line 267, in _import_one
  File "<string>", line 163, in get_code
  File "imputil.pyc", line 89, in _import_hook
  File "imputil.pyc", line 152, in _determine_import_context
AttributeError: 'module' object has no attribute 'get'







More information about the Python-list mailing list