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