40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env python 
 | |
| 
 | |
| #
 | |
| # try to find and import a nearby version of the 'py' package. 
 | |
| # otherwise use the system global default 
 | |
| # XXX turn this into a developer-only thing? 
 | |
| #
 | |
| import sys
 | |
| import os
 | |
| from os.path import dirname as opd, exists, join, basename, abspath
 | |
| 
 | |
| def searchpy(current):
 | |
|     while 1:
 | |
|         last = current
 | |
|         initpy = join(current, '__init__.py')
 | |
|         if not exists(initpy):
 | |
|             pydir = join(current, 'py')
 | |
|             # recognize py-package and ensure it is importable
 | |
|             if exists(pydir) and exists(join(pydir, '__init__.py')):
 | |
|                 #for p in sys.path:
 | |
|                 #    if p == current:
 | |
|                 #        return True
 | |
|                 if current != sys.path[0]:  # if we are already first, then ok
 | |
|                     print >>sys.stderr, "inserting into sys.path:", current
 | |
|                     sys.path.insert(0, current)
 | |
|                 return True
 | |
|         current = opd(current)
 | |
|         if last == current:
 | |
|             return False
 | |
| 
 | |
| if not searchpy(abspath(os.curdir)):
 | |
|     if not searchpy(opd(abspath(sys.argv[0]))):
 | |
|         if not searchpy(opd(__file__)):
 | |
|             pass # let's hope it is just on sys.path 
 | |
| 
 | |
| import py
 | |
| 
 | |
| if __name__ == '__main__': 
 | |
|     print "py lib is at", py.__file__
 |