How do I search for an available Python package using pip?

PythonPip

Python Problem Overview


I would like to be able to search for an available Python package using pip (on the terminal). I would like a functionality similar to apt-cache in Ubuntu. More specifically, I would like to

  1. be able to search for packages given a term (similar to apt-cache search [package-name]), and
  2. list all available packages.

Python Solutions


Solution 1 - Python

As of Dec 2020, pip search will not work (more).

The current feasible solution is to search online, on: https://pypi.org/ (reference also provided by previous comments).

If anyone hitting the following error:

xmlrpc.client.Fault: <Fault -32500: "RuntimeError: PyPI's XMLRPC API has been temporarily
disabled due to unmanageable load and will be deprecated in the near future.
See https://status.python.org/ for more information.">

as stated in #5216: > As an update: XMLRPC search does still remain disabled.

because:

> As noted in #5216 (comment), a group of servers are hitting the pip search entry point, to an extent that PyPI cannot sustain that load with the current architecture of how pip search works.

Update: As a CLI alternative to pip, that uses PyPI registry, one can use [tag:poetry]:

$ poetry search <package>

Solution 2 - Python

To search for a package, issue the command

pip search [package-name]

Solution 3 - Python

As of December the 14th, 2020, the pip search functionality has been disabled :

$ pip search cast
ERROR: XMLRPC request failed [code: -32500]
RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.

Alternatives

Here's a little tool called pip_search I've just found that does a simple search but it does the job.

This is pip_search v0.0.6 output:

$ pip_search pulsemixer
----------------  -------------------------------------------------------------------------------
Name              Description

pulsemixer        pulsemixer - CLI and curses mixer for PulseAudio
pulsectl-asyncio  Asyncio frontend for the pulsectl Python bindings of libpulse
pulsectl          Python high-level interface and ctypes-based bindings for PulseAudio (libpulse)
----------------  -------------------------------------------------------------------------------
UPDATE

pip_search has been updated, each folder is a clickable (CTRL+click) URL for each project, now it looks like this:

$ pip_search pulsemixer
                                           ๐Ÿ https://pypi.org/search/?q=pulsemixer ๐Ÿ                                            
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Package             โ”ƒ Version โ”ƒ Released     โ”ƒ Description                                                                     โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ ๐Ÿ“‚ pulsemixer       โ”‚ 1.5.1   โ”‚ Apr 11, 2020 โ”‚ pulsemixer - CLI and curses mixer for PulseAudio                                โ”‚
โ”‚ ๐Ÿ“‚ pulsectl-asyncio โ”‚ 0.1.7   โ”‚ Jun 13, 2021 โ”‚ Asyncio frontend for the pulsectl Python bindings of libpulse                   โ”‚
โ”‚ ๐Ÿ“‚ pulsectl         โ”‚ 21.5.18 โ”‚ May 22, 2021 โ”‚ Python high-level interface and ctypes-based bindings for PulseAudio (libpulse) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

To install it, just type: > pip install pip_search


There's also another tool that I've just tried called pypisearch.

To install it, just type: pip install pypisearch

And it works like this:

$ python -m pypisearch pulsemixer
pulsemixer (1.5.1)        [installed 1.5.0] pulsemixer - CLI and curses mixer for PulseAudio
pulsectl-asyncio (0.1.5)  Asyncio frontend for the pulsectl Python bindings of libpulse
pulsectl (21.3.4)         Python high-level interface and ctypes-based bindings for PulseAudio (libpulse)

Solution 4 - Python

  1. To search use pip search QUERY

    Use pip help and pip help COMMAND to learn about all available commands and their options.

  2. You can find a complete list of packages here:

    https://pypi.org/

    An index with simpler markup for easier automatic consumption can be found here:

    https://pypi.org/simple/

Solution 5 - Python

Pip search can solve your problem if you don't want to use it too often. But after regular use I found it hard to read, slow to use and it didn't show infos I sometimes needed (upload time, license, size, etc) so I ended up writing an alternative which I think turned out pretty nice.

It is called yip and it is like pip search on steroids. It supports regex search, colorized output and a menu system which makes installing from search result super easy. If you want to know more or see a screencap check it out on GitHub.

Solution 6 - Python

After Dec 2020, search doesn't work. But index does.

pip index versions <package_name>

Note: pip index is currently an experimental command. It may be removed/changed in a future release without prior warning.

Solution 7 - Python

To see a list of all available packages try running

pip search *

Solution 8 - Python

Use: pip show

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCodeKingPlusPlusView Question on Stackoverflow
Solution 1 - PythonazbarceaView Answer on Stackoverflow
Solution 2 - PythonijmarshallView Answer on Stackoverflow
Solution 3 - PythonSebMaView Answer on Stackoverflow
Solution 4 - PythonDaniel HepperView Answer on Stackoverflow
Solution 5 - PythonBalázs SárosView Answer on Stackoverflow
Solution 6 - PythoncowlinatorView Answer on Stackoverflow
Solution 7 - PythonbcarrollView Answer on Stackoverflow
Solution 8 - PythonHache LabordeView Answer on Stackoverflow