27 lines
782 B
Python
27 lines
782 B
Python
# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)
|
|
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
|
|
|
import sys
|
|
import os
|
|
|
|
def find_package(dir):
|
|
"""
|
|
Given a directory, finds the equivalent package name. If it
|
|
is directly in sys.path, returns ''.
|
|
"""
|
|
dir = os.path.abspath(dir)
|
|
orig_dir = dir
|
|
path = map(os.path.abspath, sys.path)
|
|
packages = []
|
|
last_dir = None
|
|
while 1:
|
|
if dir in path:
|
|
return '.'.join(packages)
|
|
packages.insert(0, os.path.basename(dir))
|
|
dir = os.path.dirname(dir)
|
|
if last_dir == dir:
|
|
raise ValueError(
|
|
"%s is not under any path found in sys.path" % orig_dir)
|
|
last_dir = dir
|
|
|