[PYTHON] Ajoutez votre fonction d'affichage préférée à la recherche de pip

Bonjour. Pour rechercher un module de bibliothèque python (dans pypi), utilisez la commande pip comme indiqué ci-dessous pour obtenir les résultats de la recherche, mais je voulais également ajouter l'affichage des résultats suivant.

$ pip search cvxopt
cvxopt                    - Convex optimization package
  INSTALLED: 1.1.7 (latest)
  https://pypi.python.org/pypi/cvxopt   <==Je veux ajouter cet affichage

$ pip search pandas
pandas                    - Powerful data structures for data analysis, time series,and statistics
  LATEST:    0.15.2 (not installed)     <==Je veux ajouter cet affichage
  https://pypi.python.org/pypi/pandas   <==Je veux ajouter cet affichage

Donc, j'ai un peu modifié la recherche de pip (v.6.0.x) et je l'ai réalisé.

$ ./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

Ajoutez votre fonction d'affichage préférée à la recherche de pip
Ajoutez une carte GPIO à votre ordinateur. (1)
Ajoutez votre propre vue de contenu à mitmproxy
Vous voulez ajouter des indices de type aux décorateurs Python?
Comment ajouter un chemin de recherche de module Python
Étapes pour installer votre propre bibliothèque avec pip
Ajoutez la fonction d'exportation CSV à l'écran de gestion avec django-import-export
Description à afficher avec Python> fonction> Docstrings> help () / .__ doc__