Fundamentals 16 min read

Top Downloaded Python Packages on PyPI in the Past Year

This article reviews the most downloaded Python packages on PyPI over the past year, detailing their functions, popularity rankings, key features, and example usage, covering tools such as urllib3, six, botocore, pip, requests, certifi, RSA, and more.

Python Programming Learning Circle
Python Programming Learning Circle
Python Programming Learning Circle
Top Downloaded Python Packages on PyPI in the Past Year

Today we share the Python packages with the highest download counts on PyPI in the last year, discussing their purposes, relationships, and why they are so popular.

1. urllib3 – 893 million downloads

urllib3 is an HTTP client for Python that provides many features not available in the standard library.

Thread safety

Connection pooling

Client SSL/TLS verification

Multipart file upload support

Retry and redirect handling

gzip and deflate encoding

HTTP and SOCKS proxy support

Although its name suggests it is a successor to urllib2, it is a separate library; for core‑only needs you may use urllib.request instead. Most end users prefer the higher‑level requests library, but urllib3 ranks first because about 1,200 other packages depend on it.

2. six – 732 million downloads

six is a compatibility library that enables code to run on both Python 2 and Python 3. It provides functions that mask syntax differences, e.g., six.print_() works on both versions.

Key points:

The name comes from 2 × 3 = 6.

Similar libraries include future .

To convert code to Python 3 only, see 2to3 .

Although still popular, the community encourages dropping Python 2 support now that it is officially end‑of‑life.

3. botocore, boto3, s3transfer, awscli

These four projects are listed together because they are interrelated:

botocore – 660 million downloads (rank 3)

s3transfer – 584 million downloads (rank 7)

awscli – 394 million downloads (rank 17)

boto3 – 329 million downloads (rank 22)

botocore is the low‑level AWS interface; boto3 builds on it to provide high‑level access to services such as S3 and EC2. The AWS CLI also relies on botocore. s3transfer manages S3 transfers and is a dependency of boto3, awscli, and other projects.

4. pip – 627 million downloads

pip is the standard package installer for Python, allowing easy installation from the Python Package Index or private repositories.

Recursive name: "Pip Installs Packages".

Install with pip install <package> ; uninstall with pip uninstall <package> .

Supports requirements.txt for reproducible environments.

Works well with virtualenv to create isolated environments.

5. python-dateutil – 617 million downloads

python‑dateutil extends the standard datetime module with powerful parsing capabilities.

<code>from dateutil.parser import parse

log_line = "INFO 2020-01-01T00:00:01 Happy new year, human."
timestamp = parse(log_line, fuzzy=True)
print(timestamp)  # 2020-01-01 00:00:01
</code>

6. requests – 611 million downloads

Requests builds on urllib3 to provide a simple API for HTTP requests.

<code>import requests

r = requests.get("https://api.github.com/user", auth=(user, pass))
print(r.status_code)          # 200
print(r.headers["content-type"])  # application/json; charset=utf8
print(r.encoding)            # utf-8
print(r.text)                # raw response body
print(r.json())              # parsed JSON
</code>

7. s3transfer (see item 3)

The package is already described under item 3.

8. certifi – 552 million downloads

certifi provides a curated collection of root certificates, enabling Python code to verify SSL/TLS certificates just like modern browsers.

9. idna – 527 million downloads

idna implements the Internationalised Domain Names in Applications (IDNA) protocol, allowing conversion between Unicode domain names and their ASCII representation.

<code>import idna
print(idna.encode('ドメイン.テスト'))  # b'xn--eckwd4c7c.xn--zckzah'
print(idna.decode('xn--eckwd4c7c.xn--zckzah'))  # ドメイン.テスト
</code>

10. PyYAML – 525 million downloads

PyYAML is a YAML parser and emitter for Python, allowing reading and writing of YAML files and conversion between Python objects and YAML.

<code># Using ConfigParser (only strings)
config.getint("section", "my_int")

# Using PyYAML (type‑aware)
config["section"]["my_int"]
</code>

11. pyasn1 – 512 million downloads

pyasn1 is a pure‑Python implementation of ASN.1 types and DER/BER/CER encoding, the historic data‑serialization format used in many network protocols and certificates.

12. docutils – 508 million downloads

docutils is a modular system that converts plain‑text reStructuredText documents into formats such as HTML, XML, and LaTeX. It powers the generation of Python Enhancement Proposals (PEPs) and is used by Sphinx for documentation.

13. chardet – 501 million downloads

chardet detects the character encoding of text data.

<code>chardetect somefile.txt
# output: somefile.txt: ascii with confidence 1.0
</code>

Many libraries (e.g., requests) depend on chardet for automatic encoding detection.

14. RSA – 492 million downloads

RSA is a pure‑Python implementation of the RSA public‑key algorithm, supporting encryption/decryption, signing/verification, and PKCS#1 v1.5 key generation.

<code>import rsa

# Bob creates a key pair:
(bob_pub, bob_priv) = rsa.newkeys(512)

# Alice encrypts a message for Bob:
crypto = rsa.encrypt('hello Bob!', bob_pub)

# Bob decrypts the message:
message = rsa.decrypt(crypto, bob_priv)
print(message.decode('utf8'))  # hello Bob!
</code>

15. jmespath – 473 million downloads

jmespath provides a declarative query language for extracting data from JSON structures in Python.

<code>import jmespath

d = {"foo": {"bar": "baz"}}
print(jmespath.search('foo.bar', d))  # baz

# Using a wildcard to get all names:
d = {"foo": {"bar": [{"name": "one"}, {"name": "two"}]}}
print(jmespath.search('foo.bar[*].name', d))  # ['one', 'two']
</code>

The article also contains promotional material for a free Python public‑course QR code, which is omitted from this academic summary.

developmentpythonprogrammingLibrariespypipopular packages
Python Programming Learning Circle
Written by

Python Programming Learning Circle

A global community of Chinese Python developers offering technical articles, columns, original video tutorials, and problem sets. Topics include web full‑stack development, web scraping, data analysis, natural language processing, image processing, machine learning, automated testing, DevOps automation, and big data.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.