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__)
|