def sys_path_with_modifications(self): in_path = [] sys_path_mod = list(sys_path.sys_path_with_modifications(self._evaluator, self.module)) if self.file_path is not None: # If you edit e.g. gunicorn, there will be imports like this: # `from gunicorn import something`. But gunicorn is not in the # sys.path. Therefore look if gunicorn is a parent directory, #56. if self.import_path: # TODO is this check really needed? for path in sys_path.traverse_parents(self.file_path): if os.path.basename(path) == self.str_import_path[0]: in_path.append(os.path.dirname(path)) # Since we know nothing about the call location of the sys.path, # it's a possibility that the current directory is the origin of # the Python execution. sys_path_mod.insert(0, os.path.dirname(self.file_path)) return in_path + sys_path_mod
def get_default_project(path=None): if path is None: path = os.getcwd() check = os.path.realpath(path) probable_path = None for dir in traverse_parents(check, include_current=True): try: return Project.load(dir) except (FileNotFoundError, NotADirectoryError): pass if _is_django_path(dir): return Project(dir, _django=True) if probable_path is None and _is_potential_project(dir): probable_path = dir if probable_path is not None: # TODO search for setup.py etc return Project(probable_path) curdir = path if os.path.isdir(path) else os.path.dirname(path) return Project(curdir)