mirror of https://github.com/python/cpython
Helper routines to create standalone Python applications.
This commit is contained in:
parent
f7d8f45414
commit
0aa9782d17
|
@ -0,0 +1,91 @@
|
||||||
|
"""Findmodulefiles - Find out where modules are loaded from.
|
||||||
|
Run findmodulefiles() after running a program with "python -i". The
|
||||||
|
resulting file list can be given to mkfrozenresources or to a
|
||||||
|
(non-existent) freeze-like application.
|
||||||
|
|
||||||
|
findmodulefiles will create a file listing all modules and where they have
|
||||||
|
been imported from.
|
||||||
|
|
||||||
|
findunusedbuiltins takes a list of (modules, file) and prints all builtin modules
|
||||||
|
that are _not_ in the list. The list is created by opening the findmodulefiles
|
||||||
|
output, reading it and eval()ing that.
|
||||||
|
|
||||||
|
mkpycresource takes a list of (module, file) and creates a resourcefile with all those
|
||||||
|
modules and (optionally) a main module.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def findmodulefiles(output=None):
|
||||||
|
"""Produce a file containing a list of (modulename, filename-or-None)
|
||||||
|
tuples mapping module names to source files"""
|
||||||
|
# Immedeately grab the names
|
||||||
|
import sys
|
||||||
|
module_names = sys.modules.keys()[:]
|
||||||
|
import os
|
||||||
|
if not output:
|
||||||
|
if os.name == 'mac':
|
||||||
|
import macfs
|
||||||
|
|
||||||
|
output, ok = macfs.StandardPutFile('Module file listing output:')
|
||||||
|
if not ok: sys.exit(0)
|
||||||
|
output = output.as_pathname()
|
||||||
|
if not output:
|
||||||
|
output = sys.stdout
|
||||||
|
elif type(output) == type(''):
|
||||||
|
output = open(output, 'w')
|
||||||
|
output.write('[\n')
|
||||||
|
for name in module_names:
|
||||||
|
try:
|
||||||
|
source = sys.modules[name].__file__
|
||||||
|
except AttributeError:
|
||||||
|
source = None
|
||||||
|
else:
|
||||||
|
source = `source`
|
||||||
|
output.write('\t(%s,\t%s),\n' % (`name`, source))
|
||||||
|
output.write(']\n')
|
||||||
|
del output
|
||||||
|
|
||||||
|
def findunusedbuiltins(list):
|
||||||
|
"""Produce (on stdout) a list of unused builtin modules"""
|
||||||
|
import sys
|
||||||
|
dict = {}
|
||||||
|
for name, location in list:
|
||||||
|
if location == None:
|
||||||
|
dict[name] = 1
|
||||||
|
for name in sys.builtin_module_names:
|
||||||
|
if not dict.has_key(name):
|
||||||
|
print 'Unused builtin module:', name
|
||||||
|
|
||||||
|
|
||||||
|
def mkpycresourcefile(list, main='', dst=None):
|
||||||
|
"""Copy list-of-modules to resource file dst."""
|
||||||
|
import py_resource
|
||||||
|
import Res
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if dst == None:
|
||||||
|
import macfs
|
||||||
|
fss, ok = macfs.StandardPutFile("PYC Resource output file")
|
||||||
|
if not ok: sys.exit(0)
|
||||||
|
dst = fss.as_pathname()
|
||||||
|
if main == '':
|
||||||
|
import macfs
|
||||||
|
fss, ok = macfs.PromptGetFile("Main program:", "TEXT")
|
||||||
|
if ok:
|
||||||
|
main = fss.as_pathname()
|
||||||
|
|
||||||
|
fsid = py_resource.create(dst)
|
||||||
|
|
||||||
|
if main:
|
||||||
|
id, name = py_resource.frompyfile(main, '__main__', preload=1)
|
||||||
|
print '%5d\t%s\t%s'%(id, name, main)
|
||||||
|
for name, location in list:
|
||||||
|
if not location: continue
|
||||||
|
if location[-3:] != '.py':
|
||||||
|
print '*** skipping', location
|
||||||
|
continue
|
||||||
|
id, name = py_resource.frompyfile(location, name, preload=1)
|
||||||
|
print '%5d\t%s\t%s'%(id, name, location)
|
||||||
|
|
||||||
|
Res.CloseResFile(fsid)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue