Issues with the "McMillan" installer

Timothy Docker timd at macquarie.com.au
Tue Dec 12 21:38:23 EST 2000


I'm trying to get the "McMillan" installer working on an application
that I have written, and am struggling with several problems.

The application uses python-2.0, wxWindows, and omniORB. 

My first issue is that builtin-modules are not getting resolved
correctly. If I run Simple.py on the following script (test.py)

| import sys, imputil
|
| print sys.path
|
| import time
| import thread
|
| print "hello"

and then use the install script to install a clean directory, when I
run the created executable I get...

| C:\TEMP\rt>test
| ['C:\\TEMP\\rt\\', 'C:\\TEMP', 'C:\\Python20\\Pythonwin', <archive_rt.ZlibArchive instance at 0042FCCC>]
| Traceback (most recent call last):
|   File "<string>", line 5, in ?
|   File "c:\python20\lib\imputil.py", line 91, in _import_hook
|     raise ImportError, 'No module named ' + fqname
| ImportError: No module named time
| 
| C:\TEMP\rt>

Needless to say the original script runs fine. The path as finally set
up looks a bit sus to me. (The Builder.log is attached below). I got
around this problem by changing the script to look like...

| import sys, imputil
| 
| print sys.path
| 
| sys.path.insert(0, imputil.BuiltinImporter())
| 
| import time
| import thread
| 
| print "hello"

But presumably this shouldn't be needed - what's going on here?

After working around this, I then had a problem with the wxwindows
library. The wxwindows library has its c extension (wxc.pyd) inside
the package. After building and running the installer, I end up with 
the file wxwindows.wxc.pyd in the installation directory. This isn't found
correctly when an attempt is made to import it. Renaming it to
'wxc.pyd' made the problem go away, but again a hack. Is this somehow
related to the problem above?

Any tips/pointers would be much appreciated.

Tim Docker

----------------------------------------------------------------------
---- PYZTarget: installzlib.pyz -----
{'__name__': 'installzlib.pyz',
 '_dependencies': [(imputil, c:\python20\lib\imputil.pyc, m), (zlib, q:\pc\zlib.pyd, b), (archive_rt, Q:\pc\installer\support\archive_rt.py, m)],
 'bindepends': [],
 'cfg': <ConfigParser.ConfigParser instance at 00844B8C>,
 'children': [],
 'debug': 0,
 'dependencies': ['installutils'],
 'destdir': '',
 'directories': [],
 'excludes': ['dospath', 'posixpath', 'macpath'],
 'expatterns': [],
 'exstdlib': 0,
 'extypes': [],
 'icon': '',
 'includes': ['installutils'],
 'includetk': 0,
 'misc': [],
 'name': 'installzlib.pyz',
 'packages': [],
 'pathprefix': ['Q:\\pc',
                'Q:\\pc\\installer\\support'],
 'script': [],
 'support': 1,
 'toc': [],
 'trees': [],
 'userunw': 0,
 'zlib': []}
Dependencies of installutils that couldn't be traced:
{'MACFS': {'tempfile': None},
 'ce': {'os': None},
 'dos': {'os': None},
 'mac': {'os': None},
 'macfs': {'tempfile': None},
 'os2': {'os': None},
 'posix': {'os': None},
 'pwd': {'posixpath': None}}
lTOC after expanding 'depends':
[('archive_rt',
  'q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('os', 'c:\\python20\\lib\\os.py', 'm'),
 ('sre_parse', 'c:\\python20\\lib\\sre_parse.py', 'm'),
 ('ntpath', 'c:\\python20\\lib\\ntpath.py', 'm'),
 ('carchive_rt',
  'q:\\pc\\installer\\support\\carchive_rt.py',
  'm'),
 ('re', 'c:\\python20\\lib\\re.py', 'm'),
 ('sre_constants', 'c:\\python20\\lib\\sre_constants.py', 'm'),
 ('UserDict', 'c:\\python20\\lib\\UserDict.py', 'm'),
 ('tempfile', 'c:\\python20\\lib\\tempfile.py', 'm'),
 ('sre', 'c:\\python20\\lib\\sre.py', 'm'),
 ('posixpath', 'c:\\python20\\lib\\posixpath.py', 'm'),
 ('types', 'c:\\python20\\lib\\types.py', 'm'),
 ('sre_compile', 'c:\\python20\\lib\\sre_compile.py', 'm'),
 ('copy', 'c:\\python20\\lib\\copy.py', 'm'),
 ('popen2', 'c:\\python20\\lib\\popen2.py', 'm'),
 ('imputil', 'c:\\python20\\lib\\imputil.py', 'm'),
 ('repr', 'c:\\python20\\lib\\repr.py', 'm'),
 ('dospath', 'c:\\python20\\lib\\dospath.py', 'm'),
 ('macpath', 'c:\\python20\\lib\\macpath.py', 'm'),
 ('string', 'c:\\python20\\lib\\string.py', 'm'),
 ('copy_reg', 'c:\\python20\\lib\\copy_reg.py', 'm'),
 ('stat', 'c:\\python20\\lib\\stat.py', 'm'),
 ('pre', 'c:\\python20\\lib\\pre.py', 'm')]
lTOC after includes, dir, pkgs:
[('archive_rt',
  'q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('os', 'c:\\python20\\lib\\os.py', 'm'),
 ('sre_parse', 'c:\\python20\\lib\\sre_parse.py', 'm'),
 ('ntpath', 'c:\\python20\\lib\\ntpath.py', 'm'),
 ('carchive_rt',
  'q:\\pc\\installer\\support\\carchive_rt.py',
  'm'),
 ('re', 'c:\\python20\\lib\\re.py', 'm'),
 ('sre_constants', 'c:\\python20\\lib\\sre_constants.py', 'm'),
 ('UserDict', 'c:\\python20\\lib\\UserDict.py', 'm'),
 ('tempfile', 'c:\\python20\\lib\\tempfile.py', 'm'),
 ('sre', 'c:\\python20\\lib\\sre.py', 'm'),
 ('posixpath', 'c:\\python20\\lib\\posixpath.py', 'm'),
 ('types', 'c:\\python20\\lib\\types.py', 'm'),
 ('sre_compile', 'c:\\python20\\lib\\sre_compile.py', 'm'),
 ('copy', 'c:\\python20\\lib\\copy.py', 'm'),
 ('popen2', 'c:\\python20\\lib\\popen2.py', 'm'),
 ('imputil', 'c:\\python20\\lib\\imputil.py', 'm'),
 ('repr', 'c:\\python20\\lib\\repr.py', 'm'),
 ('dospath', 'c:\\python20\\lib\\dospath.py', 'm'),
 ('macpath', 'c:\\python20\\lib\\macpath.py', 'm'),
 ('string', 'c:\\python20\\lib\\string.py', 'm'),
 ('copy_reg', 'c:\\python20\\lib\\copy_reg.py', 'm'),
 ('stat', 'c:\\python20\\lib\\stat.py', 'm'),
 ('pre', 'c:\\python20\\lib\\pre.py', 'm'),
 ('installutils',
  'Q:\\pc\\installer\\support\\installutils.py',
  'm')]
Applying the following filters:
[<ModFilter {'dospath': 1}>,
 <ModFilter {'posixpath': 1}>,
 <ModFilter {'macpath': 1}>,
 <ModFilter {'archive_rt': 1}>,
 <ModFilter {'imputil': 1}>,
 <ModFilter {'imputil': 1}>,
 <ExtFilter {'.pyo': 1, '.pyc': 1, '.py': 1}>]
Final Table of Contents for installzlib.pyz:
[('os', 'c:\\python20\\lib\\os.py', 'm'),
 ('sre_parse', 'c:\\python20\\lib\\sre_parse.py', 'm'),
 ('ntpath', 'c:\\python20\\lib\\ntpath.py', 'm'),
 ('carchive_rt',
  'q:\\pc\\installer\\support\\carchive_rt.py',
  'm'),
 ('re', 'c:\\python20\\lib\\re.py', 'm'),
 ('sre_constants', 'c:\\python20\\lib\\sre_constants.py', 'm'),
 ('UserDict', 'c:\\python20\\lib\\UserDict.py', 'm'),
 ('tempfile', 'c:\\python20\\lib\\tempfile.py', 'm'),
 ('sre', 'c:\\python20\\lib\\sre.py', 'm'),
 ('types', 'c:\\python20\\lib\\types.py', 'm'),
 ('sre_compile', 'c:\\python20\\lib\\sre_compile.py', 'm'),
 ('copy', 'c:\\python20\\lib\\copy.py', 'm'),
 ('popen2', 'c:\\python20\\lib\\popen2.py', 'm'),
 ('repr', 'c:\\python20\\lib\\repr.py', 'm'),
 ('string', 'c:\\python20\\lib\\string.py', 'm'),
 ('copy_reg', 'c:\\python20\\lib\\copy_reg.py', 'm'),
 ('stat', 'c:\\python20\\lib\\stat.py', 'm'),
 ('pre', 'c:\\python20\\lib\\pre.py', 'm'),
 ('installutils',
  'Q:\\pc\\installer\\support\\installutils.py',
  'm')]
---- PYZTarget: test.pyz -----
{'__name__': 'test.pyz',
 '_dependencies': [(imputil, c:\python20\lib\imputil.pyc, m), (zlib, q:\pc\zlib.pyd, b), (archive_rt, Q:\pc\installer\support\archive_rt.py, m)],
 'bindepends': [],
 'cfg': <ConfigParser.ConfigParser instance at 00844B8C>,
 'children': [],
 'debug': 0,
 'dependencies': ['test.py'],
 'destdir': '',
 'directories': [],
 'excludes': ['dospath', 'posixpath', 'macpath'],
 'expatterns': [],
 'exstdlib': 0,
 'extypes': [],
 'icon': '',
 'includes': [],
 'includetk': 0,
 'misc': [],
 'name': 'test.pyz',
 'packages': [],
 'pathprefix': ['Q:\\pc',
                'Q:\\pc\\installer\\support'],
 'script': [],
 'support': 1,
 'toc': [],
 'trees': [],
 'userunw': 0,
 'zlib': []}
Dependencies of test.py that couldn't be traced:
{'dos': {'imputil': None},
 'mac': {'imputil': None},
 'os2': {'imputil': None},
 'posix': {'imputil': None}}
lTOC after expanding 'depends':
[('imputil', 'c:\\python20\\lib\\imputil.py', 'm')]
lTOC after includes, dir, pkgs:
[('imputil', 'c:\\python20\\lib\\imputil.py', 'm')]
Applying the following filters:
[<ModFilter {'dospath': 1}>,
 <ModFilter {'posixpath': 1}>,
 <ModFilter {'macpath': 1}>,
 <ModFilter {'archive_rt': 1}>,
 <ModFilter {'imputil': 1}>,
 <ModFilter {'imputil': 1}>,
 <ExtFilter {'.pyo': 1, '.pyc': 1, '.py': 1}>]
Final Table of Contents for test.pyz:
[]
---- ExeTarget: test.exe -----
{'__name__': 'test.exe',
 '_dependencies': [(imputil, c:\python20\lib\imputil.py, m), (archive_rt, q:\pc\installer\support\archive_rt.py, m), (zlib, q:\pc\zlib.pyd, b), (python20.dll, C:\WINNT\System32\python20.dll, b), (carchive_rt, Q:\pc\installer\support\carchive_rt.py, m)],
 'bindepends': [],
 'cfg': <ConfigParser.ConfigParser instance at 00844B8C>,
 'children': ['APPZLIB'],
 'debug': 0,
 'dependencies': [],
 'destdir': '',
 'directories': [],
 'excludes': [],
 'expatterns': [],
 'exstdlib': 0,
 'extypes': [],
 'icon': '',
 'includes': [],
 'includetk': 0,
 'misc': [],
 'name': 'test.exe',
 'packages': [],
 'pathprefix': ['Q:\\pc',
                'Q:\\pc\\installer\\support'],
 'script': ['test.py'],
 'support': 0,
 'toc': [],
 'trees': [],
 'userunw': 0,
 'zlib': ['APPZLIB']}
Checking zlib[0]
merging test.pyz
self.zlib[0]: APPZLIB
built: {'test.pyz': <__main__.PYZTarget instance at 0088BB6C>, 'installzlib.pyz': <__main__.PYZTarget instance at 00DF175C>}
target: <__main__.PYZTarget instance at 0088BB6C>
ltoc after bindepends:
[('test.pyz', 'test.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm')]
sections: ['MYSTANDALONE', 'INSTALLZLIB', 'MYINSTALL', 'APPZLIB']
ltoc after misc:
[('test.pyz', 'test.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm')]
ltoc after scripts:
[('test.pyz', 'test.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('test', 'test.py', 's')]
ltoc after trees:
[('test.pyz', 'test.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('test', 'test.py', 's')]
Applying the following filters:
[<TypeFilter {'d': 1}>]
Final Table of Contents for test.exe:
[('test.pyz', 'test.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('test', 'test.py', 's')]
---- InstallTarget: Install_test.exe -----
{'__name__': 'Install_test.exe',
 '_dependencies': [(imputil, c:\python20\lib\imputil.py, m), (archive_rt, q:\pc\installer\support\archive_rt.py, m), (zlib, q:\pc\zlib.pyd, b), (python20.dll, C:\WINNT\System32\python20.dll, b), (carchive_rt, Q:\pc\installer\support\carchive_rt.py, m)],
 'bindepends': ['test.py'],
 'cfg': <ConfigParser.ConfigParser instance at 00844B8C>,
 'children': ['INSTALLZLIB', 'MYSTANDALONE'],
 'debug': 0,
 'dependencies': [],
 'destdir': '',
 'directories': [],
 'excludes': ['PyWinTypes20.dll', 'win32api'],
 'expatterns': [],
 'exstdlib': 0,
 'extypes': [],
 'icon': '',
 'includes': [],
 'includetk': 0,
 'misc': ['MYSTANDALONE'],
 'name': 'Install_test.exe',
 'packages': [],
 'pathprefix': ['Q:\\pc',
                'Q:\\pc\\installer\\support'],
 'script': ['gen_install.py'],
 'support': 1,
 'toc': [],
 'trees': [],
 'userunw': 0,
 'zlib': ['INSTALLZLIB']}
Checking zlib[0]
merging installzlib.pyz
self.zlib[0]: INSTALLZLIB
built: {'test.exe': <__main__.ExeTarget instance at 00845B5C>, 'test.pyz': <__main__.PYZTarget instance at 0088BB6C>, 'installzlib.pyz': <__main__.PYZTarget instance at 00DF175C>}
target: <__main__.PYZTarget instance at 00DF175C>
ltoc after bindepends:
[('win32api', 'c:\\python20\\win32\\win32api.pyd', 'b'),
 ('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('_sre', 'c:\\python20\\dlls\\_sre.pyd', 'b'),
 ('PyWinTypes20.dll', 'C:\\WINNT\\System32\\PyWinTypes20.dll', 'b'),
 ('python20.dll', 'C:\\WINNT\\System32\\python20.dll', 'b'),
 ('installzlib.pyz', 'installzlib.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm')]
sections: ['MYSTANDALONE', 'INSTALLZLIB', 'MYINSTALL', 'APPZLIB']
checking MYSTANDALONE
 which is test.exe
ltoc after misc:
[('win32api', 'c:\\python20\\win32\\win32api.pyd', 'b'),
 ('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('_sre', 'c:\\python20\\dlls\\_sre.pyd', 'b'),
 ('PyWinTypes20.dll', 'C:\\WINNT\\System32\\PyWinTypes20.dll', 'b'),
 ('python20.dll', 'C:\\WINNT\\System32\\python20.dll', 'b'),
 ('installzlib.pyz', 'installzlib.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('test.exe', 'test.exe', 'x')]
ltoc after scripts:
[('win32api', 'c:\\python20\\win32\\win32api.pyd', 'b'),
 ('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('_sre', 'c:\\python20\\dlls\\_sre.pyd', 'b'),
 ('PyWinTypes20.dll', 'C:\\WINNT\\System32\\PyWinTypes20.dll', 'b'),
 ('python20.dll', 'C:\\WINNT\\System32\\python20.dll', 'b'),
 ('installzlib.pyz', 'installzlib.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('test.exe', 'test.exe', 'x'),
 ('gen_install', 'gen_install.py', 's')]
ltoc after trees:
[('win32api', 'c:\\python20\\win32\\win32api.pyd', 'b'),
 ('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('_sre', 'c:\\python20\\dlls\\_sre.pyd', 'b'),
 ('PyWinTypes20.dll', 'C:\\WINNT\\System32\\PyWinTypes20.dll', 'b'),
 ('python20.dll', 'C:\\WINNT\\System32\\python20.dll', 'b'),
 ('installzlib.pyz', 'installzlib.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('test.exe', 'test.exe', 'x'),
 ('gen_install', 'gen_install.py', 's')]
Applying the following filters:
[<FileFilter {'PyWinTypes20.dll': 1}>,
 <FileFilter {'win32api': 1}>,
 <TypeFilter {'d': 1}>]
Final Table of Contents for Install_test.exe:
[('zlib',
  'q:\\pc\\zlib.pyd',
  'b'),
 ('_sre', 'c:\\python20\\dlls\\_sre.pyd', 'b'),
 ('python20.dll', 'C:\\WINNT\\System32\\python20.dll', 'b'),
 ('installzlib.pyz', 'installzlib.pyz', 'z'),
 ('imputil', 'c:\\python20\\lib\\imputil.pyc', 'm'),
 ('archive_rt',
  'Q:\\pc\\installer\\support\\archive_rt.py',
  'm'),
 ('test.exe', 'test.exe', 'x'),
 ('gen_install', 'gen_install.py', 's')]



More information about the Python-list mailing list