def install_local_project(path): """Install a distribution from a source directory or archive. If *path* is an archive, it will be unarchived first. If the source directory contains a setup.py install using distutils1. If a setup.cfg is found, install using the install_dist command. Returns True on success, False on Failure. """ path = os.path.abspath(path) if os.path.isdir(path): logger.info('Installing from source directory: %r', path) return _run_install_from_dir(path) elif _is_archive_file(path): logger.info('Installing from archive: %r', path) _unpacked_dir = tempfile.mkdtemp() try: shutil.unpack_archive(path, _unpacked_dir) return _run_install_from_archive(_unpacked_dir) finally: shutil.rmtree(_unpacked_dir) else: logger.warning('No project to install.') return False
def _install(dispatcher, args, **kw): # first check if we are in a source directory if len(args) < 2: # are we inside a project dir? if os.path.isfile('setup.cfg') or os.path.isfile('setup.py'): args.insert(1, os.getcwd()) else: logger.warning('No project to install.') return 1 target = args[1] # installing from a source dir or archive file? if os.path.isdir(target) or _is_archive_file(target): return not install_local_project(target) else: # download from PyPI return not install(target)