def add(self, path): head, tail = os.path.split(path) # we normalize the head to resolve parent directory symlinks, but not # the tail, since we only want to uninstall symlinks, not their targets path = os.path.join(normalize_path(head), os.path.normcase(tail)) if not os.path.exists(path): return if self._permitted(path): self.paths.add(path) else: self._refuse.add(path) # __pycache__ files can show up after 'installed-files.txt' is created, # due to imports if os.path.splitext(path)[1] == '.py' and uses_pycache: self.add(cache_from_source(path))
def _patch_dist_in_site_packages(script): sitecustomize_path = script.lib_path.join("sitecustomize.py") sitecustomize_path.write(textwrap.dedent(""" def dist_in_site_packages(dist): return False from pip._internal.req import req_install req_install.dist_in_site_packages = dist_in_site_packages """)) # Caught py32 with an outdated __pycache__ file after a sitecustomize # update (after python should have updated it) so will delete the cache # file to be sure # See: https://github.com/pypa/pip/pull/893#issuecomment-16426701 if uses_pycache: cache_path = cache_from_source(sitecustomize_path) if os.path.isfile(cache_path): os.remove(cache_path)