What's the problem this feature will solve?
When i make a pip list i see a lot of modules, but i don't easily remember what it each module :smile:
Describe the solution you'd like
Is it possible to have one pip list which return the summary of each module ? or an argument on this command ?
Alternative Solutions
Additional context
What do you mean by summary? Personally I feel pip doesn鈥檛 need to get involved in complex functionalities and should focus on making it easy for users to compose commands instead. In this case you can write a script to call pip show
on each package to get what you want (I guess).
Hi,
For example, you can use :
pip list --format=columns | tail -n +3| cut -d" " -f1 | xargs -n1 pip show | grep -E 'Name|Summary'
in an alias command
For example this is a part of my pip list :
pip list
Package Version Location
ansible 2.9.2
appdirs 1.4.3
apturl 0.5.2
asn1crypto 1.2.0
attrs 19.2.0
beautifulsoup4 4.6.0
blinker 1.4
bpytop 1.0.40
Brlapi 0.6.6
cached-property 1.5.1
certifi 2019.11.28
cffi 1.12.3
chardet 3.0.4
Click 7.0
colorama 0.4.1
command-not-found 0.3
cryptography 2.8
cupshelpers 1.0
defer 1.0.6
defusedxml 0.6.0
distro 1.5.0
distro-info 0.18ubuntu0.18.04.1
feedparser 5.2.1
html5lib 0.999999999
httplib2 0.9.2
[...]
but i don't remember what is each module. And effectively one pip show module show me but if i need to make this for x modules, it will be a lot of time :smile:
Other command, you can change the last word to search other string in "man packages"
while read -r ligne;do;pip show $ligne | grep -E "^Name|^Summary" | sed ':a;N;$!ba;s/\n/ /g' ;done < <(pip list --format=columns | tail -n +3 | cut -d" " -f1) | grep monitor
gives for me
Name: bpytop Summary: Resource monitor that shows usage and stats for processor, memory, disks, network and processes.
Name: psutil Summary: Cross-platform lib for process and system monitoring in Python.
Edit :
function pipsearch () { while read -r ligne ; do pip show $ligne | grep -E "^Name|^Summary" | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' ; done < <(pip list --format=columns | tail -n +3 | cut -d" " -f1) | grep "$1" ; }
pipsearch monitor
Most package managers that I know of, except pip
, offer a way to list packages along with their descriptions (and often their versions), and composability usually isn't a problem: getting a list of packages is just a matter of extracting the column with package names.
Anyway, here is my draft solution (using bash
, pip
, sed
, awk
, column
) for the original suggestion:
$ # List all installed packages, with package name, version, and summary (in fact any property supported by `pip show`), in a table
$ pip show $(pip list | sed -ne '3,$s/ .*$//p') |
sed -e 's/: /\t/' |
awk -F'\t' '
NR==FNR { a[$1]; next }
$1 in a { if (l) l=l FS; l=l $2 }
$1 == "---" { print l; l="" }
END { if (l) print l }
' <(printf "%s\n" Name Version Summary) - |
column -s "$(printf "\t")" -t -N Package,Version,Summary
Most helpful comment
What do you mean by summary? Personally I feel pip doesn鈥檛 need to get involved in complex functionalities and should focus on making it easy for users to compose commands instead. In this case you can write a script to call
pip show
on each package to get what you want (I guess).