40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
#!/usr/bin/env python
 | 
						|
 | 
						|
#
 | 
						|
# find and import a version of 'py' that exists in a parent dir
 | 
						|
# of the current working directory. fall back to import a
 | 
						|
# globally available version
 | 
						|
#
 | 
						|
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
 | 
						|
                    sys.stderr.write("inserting into sys.path: %s\n" % 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 %s" % py.__file__)
 |