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