[PYTHON] Fügen Sie der Pip-Suche Ihre bevorzugte Anzeigefunktion hinzu

Hallo. Um nach einem Python-Bibliotheksmodul (in pypi) zu suchen, verwenden Sie den Befehl pip wie unten gezeigt, um die Suchergebnisse abzurufen. Ich wollte jedoch auch die folgende Ergebnisanzeige hinzufügen.

$ pip search cvxopt
cvxopt                    - Convex optimization package
  INSTALLED: 1.1.7 (latest)
  https://pypi.python.org/pypi/cvxopt   <==Ich möchte diese Anzeige hinzufügen

$ pip search pandas
pandas                    - Powerful data structures for data analysis, time series,and statistics
  LATEST:    0.15.2 (not installed)     <==Ich möchte diese Anzeige hinzufügen
  https://pypi.python.org/pypi/pandas   <==Ich möchte diese Anzeige hinzufügen

Also habe ich die Suche nach pip (v.6.0.x) ein wenig modifiziert und realisiert.

$ ./mypatch.rb search.py.patch

mypatch.rb


#!/usr/bin/ruby
# coding: utf-8
cmd = "patch -b -p0 < "
ARGV.each {|file|
    `#{cmd + file + " 2>&1"}`  # for sh/bash
}

search.py.patch


--- /usr/local/lib/python2.7/site-packages/pip/commands/search.py
+++ search.py.orig
@@ -47,7 +47,7 @@
         if sys.stdout.isatty():
             terminal_width = get_terminal_size()[0]
 
-        print_results(hits, terminal_width=terminal_width)
+        print_results(hits, query, terminal_width=terminal_width)
         if pypi_hits:
             return SUCCESS
         return NO_MATCHES_FOUND
@@ -101,7 +101,7 @@
     return package_list
 
 
-def print_results(hits, name_column_width=25, terminal_width=None):
+def print_results(hits, query, name_column_width=25, terminal_width=None):
     installed_packages = [p.project_name for p in pkg_resources.working_set]
     for hit in hits:
         name = hit['name']
@@ -125,6 +125,11 @@
                     else:
                         logger.info('INSTALLED: %s', dist.version)
                         logger.info('LATEST:    %s', latest)
+            elif in_case_insensitive(name, query):
+                latest = highest_version(hit['versions'])
+                logger.info('  LATEST:    %s (not installed)' % latest)
+            if in_case_insensitive(name, query):
+                logger.info('  %s/%s' % (PyPI.pypi_url, name))
         except UnicodeEncodeError:
             pass
 
@@ -133,3 +138,7 @@
     return next(iter(
         sorted(versions, key=pkg_resources.parse_version, reverse=True)
     ))
+
+def in_case_insensitive(x, list):
+    return x.lower() in [y.lower() for y in list]
+

Recommended Posts

Fügen Sie der Pip-Suche Ihre bevorzugte Anzeigefunktion hinzu
Fügen Sie Ihrem Computer eine GPIO-Karte hinzu. (1)
Fügen Sie mitmproxy Ihre eigene Inhaltsansicht hinzu
Möchten Sie Python-Dekoratoren Typhinweise hinzufügen?
So fügen Sie einen Suchpfad für Python-Module hinzu
Schritte zum Installieren Ihrer eigenen Bibliothek mit pip
Fügen Sie dem Verwaltungsbildschirm mit django-import-export die CSV-Exportfunktion hinzu
Erklärender Text, der mit Python> Funktion> Docstrings> help () / .__ doc__ angezeigt werden soll