/
usr
/
lib
/
python2.7
/
site-packages
/
pip
/
commands
/
/usr/lib/python2.7/site-packages/pip/commands
mkdir
upload
Name
Size
Mode
Actions
check.py
1382
0644
edit
dl
rm
check.pyc
1599
0644
edit
dl
rm
check.pyo
1599
0644
edit
dl
rm
completion.py
2453
0644
edit
dl
rm
completion.pyc
2894
0644
edit
dl
rm
completion.pyo
2894
0644
edit
dl
rm
download.py
7810
0644
edit
dl
rm
download.pyc
6173
0644
edit
dl
rm
download.pyo
6173
0644
edit
dl
rm
freeze.py
2835
0644
edit
dl
rm
freeze.pyc
3193
0644
edit
dl
rm
freeze.pyo
3193
0644
edit
dl
rm
hash.py
1597
0644
edit
dl
rm
hash.pyc
2403
0644
edit
dl
rm
hash.pyo
2403
0644
edit
dl
rm
help.py
982
0644
edit
dl
rm
help.pyc
1352
0644
edit
dl
rm
help.pyo
1352
0644
edit
dl
rm
install.py
18289
0644
edit
dl
rm
install.pyc
12098
0644
edit
dl
rm
install.pyo
12098
0644
edit
dl
rm
list.py
11369
0644
edit
dl
rm
list.pyc
11139
0644
edit
dl
rm
list.pyo
11094
0644
edit
dl
rm
search.py
4502
0644
edit
dl
rm
search.pyc
4955
0644
edit
dl
rm
search.pyo
4955
0644
edit
dl
rm
show.py
5891
0644
edit
dl
rm
show.pyc
5747
0644
edit
dl
rm
show.pyo
5747
0644
edit
dl
rm
uninstall.py
2884
0644
edit
dl
rm
uninstall.pyc
3039
0644
edit
dl
rm
uninstall.pyo
3039
0644
edit
dl
rm
wheel.py
7729
0644
edit
dl
rm
wheel.pyc
6366
0644
edit
dl
rm
wheel.pyo
6366
0644
edit
dl
rm
__init__.py
2244
0644
edit
dl
rm
__init__.pyc
2636
0644
edit
dl
rm
__init__.pyo
2636
0644
edit
dl
rm
Edit:
/usr/lib/python2.7/site-packages/pip/commands/show.py
(5891B)
from __future__ import absolute_import from email.parser import FeedParser import logging import os from pip.basecommand import Command from pip.status_codes import SUCCESS, ERROR from pip._vendor import pkg_resources from pip._vendor.packaging.utils import canonicalize_name logger = logging.getLogger(__name__) class ShowCommand(Command): """Show information about one or more installed packages.""" name = 'show' usage = """ %prog [options] <package> ...""" summary = 'Show information about installed packages.' def __init__(self, *args, **kw): super(ShowCommand, self).__init__(*args, **kw) self.cmd_opts.add_option( '-f', '--files', dest='files', action='store_true', default=False, help='Show the full list of installed files for each package.') self.parser.insert_option_group(0, self.cmd_opts) def run(self, options, args): if not args: logger.warning('ERROR: Please provide a package name or names.') return ERROR query = args results = search_packages_info(query) if not print_results( results, list_files=options.files, verbose=options.verbose): return ERROR return SUCCESS def search_packages_info(query): """ Gather details from installed distributions. Print distribution name, version, location, and installed files. Installed files requires a pip generated 'installed-files.txt' in the distributions '.egg-info' directory. """ installed = {} for p in pkg_resources.working_set: installed[canonicalize_name(p.project_name)] = p query_names = [canonicalize_name(name) for name in query] for dist in [installed[pkg] for pkg in query_names if pkg in installed]: package = { 'name': dist.project_name, 'version': dist.version, 'location': dist.location, 'requires': [dep.project_name for dep in dist.requires()], } file_list = None metadata = None if isinstance(dist, pkg_resources.DistInfoDistribution): # RECORDs should be part of .dist-info metadatas if dist.has_metadata('RECORD'): lines = dist.get_metadata_lines('RECORD') paths = [l.split(',')[0] for l in lines] paths = [os.path.join(dist.location, p) for p in paths] file_list = [os.path.relpath(p, dist.location) for p in paths] if dist.has_metadata('METADATA'): metadata = dist.get_metadata('METADATA') else: # Otherwise use pip's log for .egg-info's if dist.has_metadata('installed-files.txt'): paths = dist.get_metadata_lines('installed-files.txt') paths = [os.path.join(dist.egg_info, p) for p in paths] file_list = [os.path.relpath(p, dist.location) for p in paths] if dist.has_metadata('PKG-INFO'): metadata = dist.get_metadata('PKG-INFO') if dist.has_metadata('entry_points.txt'): entry_points = dist.get_metadata_lines('entry_points.txt') package['entry_points'] = entry_points if dist.has_metadata('INSTALLER'): for line in dist.get_metadata_lines('INSTALLER'): if line.strip(): package['installer'] = line.strip() break # @todo: Should pkg_resources.Distribution have a # `get_pkg_info` method? feed_parser = FeedParser() feed_parser.feed(metadata) pkg_info_dict = feed_parser.close() for key in ('metadata-version', 'summary', 'home-page', 'author', 'author-email', 'license'): package[key] = pkg_info_dict.get(key) # It looks like FeedParser cannot deal with repeated headers classifiers = [] for line in metadata.splitlines(): if line.startswith('Classifier: '): classifiers.append(line[len('Classifier: '):]) package['classifiers'] = classifiers if file_list: package['files'] = sorted(file_list) yield package def print_results(distributions, list_files=False, verbose=False): """ Print the informations from installed distributions found. """ results_printed = False for i, dist in enumerate(distributions): results_printed = True if i > 0: logger.info("---") logger.info("Name: %s", dist.get('name', '')) logger.info("Version: %s", dist.get('version', '')) logger.info("Summary: %s", dist.get('summary', '')) logger.info("Home-page: %s", dist.get('home-page', '')) logger.info("Author: %s", dist.get('author', '')) logger.info("Author-email: %s", dist.get('author-email', '')) logger.info("License: %s", dist.get('license', '')) logger.info("Location: %s", dist.get('location', '')) logger.info("Requires: %s", ', '.join(dist.get('requires', []))) if verbose: logger.info("Metadata-Version: %s", dist.get('metadata-version', '')) logger.info("Installer: %s", dist.get('installer', '')) logger.info("Classifiers:") for classifier in dist.get('classifiers', []): logger.info(" %s", classifier) logger.info("Entry-points:") for entry in dist.get('entry_points', []): logger.info(" %s", entry.strip()) if list_files: logger.info("Files:") for line in dist.get('files', []): logger.info(" %s", line.strip()) if "files" not in dist: logger.info("Cannot locate installed-files.txt") return results_printed
Save
cmd:
run