Pyrex / py2exe import interaction

Clark C . Evans cce at clarkevans.com
Tue Jul 30 23:25:47 EDT 2002


Ok.  I've gone a bit further.  It appears that the problem occurs
during a call to imp.load_module on line 163 of support.py of py2exe
The tail of my trace now looks like...

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__')

AT support.py#160

CALLING imp.load_module(fqname='testmod', fp=<open file 'c:\cygwin\home\cce\prob\dist\test\testmod.pyd', mode 'rb' at 0x007E9390>, pathname='c:\\cygwin\\home\\cce\\prob\\dist\\test\\testmod.pyd', desc=('.pyd', 'rb', 3))

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 164, 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'

...

Now, I just tried imp.load_module directly, and it worked.  So,
somehow one of those other "hooks" is firing and doing something
strange...  I don't know where to put trace code to peek

ActivePython 2.2.1 Build 222 (ActiveState Corp.) based on
Python 2.2.1 (#34, Apr 15 2002, 09:51:39) [MSC 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import imp
>>> name = "c:\\cygwin\\home\\cce\\prob\\dist\\test\\testmod.pyd"
>>> file = open(fn,'rb')
>>> imp.load_module('testmod',file,name,('.pyd','rb',3))
<module 'testmod' from 'c:\cygwin\home\cce\prob\dist\test\testmod.pyd'>
>>> ^Z

So.  I just don't know where else to look at this point.  
Here's hoping!

Clark

On Tue, Jul 30, 2002 at 10:52:20PM -0400, Clark C . Evans wrote:
| 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'
| 
| 
| 
| 
| -- 
| http://mail.python.org/mailman/listinfo/python-list

-- 
Clark C. Evans                   Axista, Inc.
http://www.axista.com            800.926.5525
XCOLLA Collaborative Project Management Software




More information about the Python-list mailing list