def install(self): self.success = False logger.info('Looking for {0} releases on PyPI', self.name) p = ReqManager(self) try: files = p.files() except (urllib2.URLError, urllib2.HTTPError) as e: raise InstallationError(repr(e.reason) if hasattr(e, 'reason') else e.msg) bad_eggs = [] for pext in ('.tar.gz', '.tar.bz2', '.zip', '.egg'): for v, name, hash, url in files[pext]: if pext == '.egg' and not right_egg(name): if args_manager['install']['force_egg_install']: bad_eggs.append( (url, name, p.name, hash) ) continue if ext(name) not in ('.tar.gz', '.tar.bz2', '.zip', '.egg') + WINDOWS_EXT: continue logger.info('Best match: {0}=={1}', self.name, v) try: self._download_and_install(url, name, p.name, hash) except InstallationError: logger.info('Trying another file (if there is one)...') continue if not self.version: self.version = v break if self.success: return if bad_eggs: self._check_bad_eggs(bad_eggs) if not self.success: raise InstallationError('Error: Cannot find files available for dowloading and installing')