1b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org) 2b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php 3b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik 4b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craikimport sys 5b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craikimport os 6b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik 7b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craikdef find_package(dir): 8b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik """ 9b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik Given a directory, finds the equivalent package name. If it 10b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik is directly in sys.path, returns ''. 11b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik """ 12b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik dir = os.path.abspath(dir) 13b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik orig_dir = dir 14b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik path = map(os.path.abspath, sys.path) 15b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik packages = [] 16b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik last_dir = None 17b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik while 1: 18b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik if dir in path: 19b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik return '.'.join(packages) 20b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik packages.insert(0, os.path.basename(dir)) 21b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik dir = os.path.dirname(dir) 22b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik if last_dir == dir: 23b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik raise ValueError( 24b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik "%s is not under any path found in sys.path" % orig_dir) 25b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik last_dir = dir 26b2cbf1594f8d6e4ba32d384cf379f62a74ed7654Chris Craik 27