mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Helper routines to create standalone Python applications.
This commit is contained in:
		
							parent
							
								
									f7d8f45414
								
							
						
					
					
						commit
						0aa9782d17
					
				
					 1 changed files with 91 additions and 0 deletions
				
			
		
							
								
								
									
										91
									
								
								Mac/Lib/findmodulefiles.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								Mac/Lib/findmodulefiles.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jack Jansen
						Jack Jansen