awesome-python
An opinionated list of Python frameworks, libraries, tools, and resources
Top Related Projects
😎 Awesome lists about all kinds of interesting topics
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
Curated list of project-based tutorials
:books: Freely available programming books
A complete computer science study plan to become a software engineer.
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Quick Overview
Awesome Python is a curated list of Python frameworks, libraries, software, and resources. It serves as a comprehensive collection of high-quality Python tools and resources, organized by categories such as Web Development, Data Visualization, Machine Learning, and more. The project aims to help developers discover and explore the best Python libraries and tools available.
Pros
- Extensive collection of Python resources in one place
- Well-organized and categorized for easy navigation
- Regularly updated with new and relevant content
- Community-driven with contributions from many developers
Cons
- Can be overwhelming due to the sheer number of resources listed
- Requires manual curation and maintenance to keep up-to-date
- May include some outdated or less popular libraries alongside more current ones
- Lacks detailed descriptions or comparisons between similar tools
Getting Started
To use the Awesome Python list:
- Visit the GitHub repository: https://github.com/vinta/awesome-python
- Browse through the categories to find resources you're interested in
- Click on the links to explore specific libraries or tools
- Star the repository to keep it handy for future reference
- Consider contributing by submitting a pull request if you know of a great Python resource that's not listed
Note: This is not a code library, so there are no code examples or installation instructions. The Awesome Python list is a curated collection of resources, meant to be browsed and explored directly on GitHub or in your preferred Markdown viewer.
Competitor Comparisons
😎 Awesome lists about all kinds of interesting topics
Pros of awesome
- Broader scope, covering multiple programming languages and technologies
- Larger community with more contributors and frequent updates
- More comprehensive categorization and organization of resources
Cons of awesome
- Less focused, potentially overwhelming for users seeking Python-specific resources
- May include outdated or less relevant links due to its vast scope
- Requires more navigation to find Python-specific content
Code comparison
Not applicable, as both repositories are curated lists of resources and don't contain significant code samples.
Summary
awesome-python is a specialized repository focusing exclusively on Python resources, making it ideal for Python developers seeking curated content. It offers a more targeted experience with a deeper dive into Python-specific tools, libraries, and frameworks.
awesome, on the other hand, is a more extensive collection covering various programming languages and technologies. It provides a broader perspective and can be valuable for developers working with multiple languages or exploring different areas of software development.
The choice between the two repositories depends on the user's specific needs. For Python-centric development, awesome-python offers a more focused and relevant selection. For those interested in a wider range of technologies or looking for inspiration across different domains, awesome provides a more comprehensive resource.
Both repositories are well-maintained and offer valuable curated lists for developers, with the main difference being their scope and focus.
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
Pros of system-design-primer
- Focuses on system design concepts and principles, providing a comprehensive guide for software engineers
- Includes visual aids, diagrams, and real-world examples to illustrate complex system design concepts
- Offers a structured learning path with exercises and interview preparation materials
Cons of system-design-primer
- Limited to system design topics, lacking the breadth of Python-specific resources found in awesome-python
- May require more time investment to fully grasp the concepts compared to the quick reference style of awesome-python
- Less frequently updated compared to awesome-python, which is continuously maintained with new Python resources
Code Comparison
While both repositories primarily focus on documentation and resources rather than code, system-design-primer does include some code examples to illustrate certain concepts:
system-design-primer:
class LRUCache:
def __init__(self, max_size):
self.max_size = max_size
self.cache = {}
self.next = {}
self.prev = {}
self.head = None
self.tail = None
awesome-python doesn't typically include code snippets, as it's primarily a curated list of Python resources and libraries.
Curated list of project-based tutorials
Pros of project-based-learning
- Focuses on hands-on learning through complete projects
- Covers a wide range of programming languages and technologies
- Organizes resources by difficulty level (beginner, intermediate, advanced)
Cons of project-based-learning
- Less comprehensive in Python-specific resources
- May not be as frequently updated as awesome-python
- Lacks categorization by specific topics or libraries within each language
Code comparison
Not applicable for these repositories, as they are curated lists of resources rather than code repositories.
Summary
awesome-python is a comprehensive collection of Python libraries, tools, and resources, organized by categories such as web development, data visualization, and machine learning. It's an excellent reference for Python developers looking for specific tools or libraries.
project-based-learning, on the other hand, offers a broader range of programming languages and technologies, focusing on complete project tutorials. It's ideal for learners who prefer hands-on experience and want to build practical applications across various domains.
Both repositories serve different purposes and can be valuable resources for developers, depending on their learning style and specific needs. awesome-python is more suitable for those seeking Python-specific tools and libraries, while project-based-learning caters to learners interested in building complete projects across multiple languages and technologies.
:books: Freely available programming books
Pros of free-programming-books
- Broader scope, covering multiple programming languages and topics
- Focuses on free educational resources, including books, courses, and tutorials
- Regularly updated with community contributions
Cons of free-programming-books
- Less curated and organized compared to awesome-python
- May include outdated resources due to its extensive collection
- Lacks specific focus on Python ecosystem and tools
Code comparison
Not applicable for these repositories, as they are curated lists of resources rather than code-based projects.
Summary
free-programming-books is a comprehensive collection of free programming resources across various languages and topics, making it an excellent starting point for learners exploring different areas of software development. However, its broad scope can make it challenging to find specific, up-to-date resources for a particular language or framework.
awesome-python, on the other hand, is a more focused and curated list of Python-specific tools, libraries, and resources. It provides a well-organized overview of the Python ecosystem, making it easier for developers to discover and evaluate Python-related projects and libraries.
Both repositories serve different purposes and can be valuable depending on the user's needs. free-programming-books is better for those seeking free educational materials across multiple programming languages, while awesome-python is ideal for Python developers looking for high-quality tools and libraries within the Python ecosystem.
A complete computer science study plan to become a software engineer.
Pros of coding-interview-university
- Comprehensive study plan for computer science fundamentals and interview preparation
- Includes a wide range of topics beyond just Python, covering algorithms, data structures, and system design
- Provides a structured learning path with clear goals and milestones
Cons of coding-interview-university
- Less focused on Python-specific resources and libraries
- May be overwhelming for beginners or those not specifically preparing for technical interviews
- Lacks the extensive categorization and organization of resources found in awesome-python
Code comparison
While both repositories don't primarily focus on code snippets, coding-interview-university occasionally includes simple implementations for educational purposes:
# coding-interview-university example (Binary Search)
def binary_search(list, item):
low = 0
high = len(list) - 1
while low <= high:
mid = (low + high) // 2
guess = list[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
awesome-python, on the other hand, primarily links to external resources and doesn't typically include code snippets directly in the repository.
Both repositories serve different purposes: coding-interview-university is a comprehensive study guide for computer science and interview preparation, while awesome-python is a curated list of Python frameworks, libraries, and resources. The choice between them depends on the user's specific learning goals and needs.
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Error generating comparison
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Awesome Python
An opinionated guide to the best Python frameworks, libraries, and tools.
Visit the website to search and filter projects more easily.
Sponsors
The #10 most-starred repo on GitHub. Put your product in front of Python developers. Become a sponsor.
Categories
AI & ML
- AI and Agents
- Deep Learning
- Machine Learning
- Natural Language Processing
- Computer Vision
- Recommender Systems
Web Development
- Web Frameworks
- Web APIs
- Web Servers
- WebSocket
- Template Engines
- Web Asset Management
- Authentication
- Admin Panels
- CMS
- ERP
- Static Site Generators
HTTP & Scraping
Database & Storage
Data & Science
- Data Analysis
- Data Ingestion / ETL
- Data Validation
- Data Visualization
- Geolocation
- Science
- Quantum Computing
Developer Tools
- Algorithms and Design Patterns
- Interactive Interpreter
- Code Analysis
- Testing
- Debugging Tools
- Build Tools
- Documentation
DevOps
- DevOps Tools
- Distributed Computing
- Task Queues
- Messaging
- Job Schedulers
- Logging
- Network Virtualization
CLI & GUI
Text & Documents
Media
Python Language
- Implementations
- Built-in Classes Enhancement
- Functional Programming
- Asynchronous Programming
- Date and Time
Python Toolchain
Security
Other
Projects
AI & ML
AI and Agents
Libraries for building AI applications, LLM integrations, and autonomous agents.
- Agent Skills
- django-ai-plugins - Django backend agent skills for Django, DRF, Celery, and Django-specific code review.
- sentry-skills - Python-focused engineering skills for code review, debugging, and backend workflows.
- trailofbits-skills - Python-friendly security skills for auditing, testing, and safer backend development.
- Orchestration
- langchain - Building applications with LLMs through composability.
- langgraph - Low-level orchestration framework for building stateful, long-running LLM agents.
- crewai - A framework for orchestrating role-playing autonomous AI agents for collaborative task solving.
- pydantic-ai - A Python agent framework for building generative AI applications with structured schemas.
- Vendor Agent SDKs
- openai-agents - OpenAI's framework for building and managing AI agents.
- claude-agent-sdk - Anthropic's Python SDK for building AI agents on Claude Code's harness â custom tools, in-process MCP servers, hooks.
- Personal Assistants
- hermes-agent - An adaptive personal AI assistant that grows with you.
- Prompt Optimization
- dspy - A framework for programming, not prompting, language models.
- Data Layer
- instructor - A library for extracting structured data from LLMs, powered by Pydantic.
- llama-index - A data framework for your LLM application.
- mem0 - An intelligent memory layer for AI agents enabling personalized interactions.
- openviking - A context database for AI agents that unifies memory, resources, and skills.
- semantica - A graph-native context and knowledge layer for AI agents with reasoning, provenance, and governance.
- Pre-trained Models
- transformers - A framework that lets you easily use pre-trained transformer models for NLP, vision, and audio tasks.
- LLM Inference and Serving
- LLM Gateways
- LiteLLM - Call 100+ LLMs using OpenAI format.
- Image and Video Generation
- diffusers - A library that provides pre-trained diffusion models for generating and editing images, audio, and video.
- Fine-tuning
- Speech
- openai-whisper - A general-purpose automatic speech recognition model trained on 680k hours of multilingual and multitask supervised data.
- funasr - Industrial-grade speech recognition toolkit with 170x realtime speed, 50+ languages, speaker diarization, and emotion detection.
- vibevoice - A family of open-source voice AI models from Microsoft for text-to-speech and long-form speech recognition.
- gTTS - Python library and CLI tool for converting text to speech using Google Translate TTS.
- kittentts - Lightweight ONNX text-to-speech library with small CPU-friendly models.
Deep Learning
Frameworks for Neural Networks and Deep Learning. Also see awesome-deep-learning.
- Frameworks
- pytorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration.
- tensorflow - The most popular Deep Learning framework created by Google.
- keras - A high-level deep learning library with support for JAX, TensorFlow, and PyTorch backends.
- jax - A library for high-performance numerical computing with automatic differentiation and JIT compilation.
- pytorch-lightning - Deep learning framework to train, deploy, and ship AI products Lightning fast.
- Reinforcement Learning
- gymnasium - A standard API for reinforcement learning environments with popular reference environments (gym successor).
- stable-baselines3 - PyTorch implementations of Stable Baselines (deep) reinforcement learning algorithms.
Machine Learning
Libraries for Machine Learning. Also see awesome-machine-learning.
- General
- scikit-learn - The most popular Python library for Machine Learning with extensive documentation and community support.
- pgmpy - A Python library for probabilistic graphical models and Bayesian networks.
- feature-engine - sklearn compatible API with the widest toolset for feature engineering and selection.
- Gradient Boosting
- Time Series Forecasting
- timesfm - A pretrained foundation model from Google Research for time-series forecasting.
Natural Language Processing
Libraries for working with human languages.
- General
- nltk - A leading platform for building Python programs to work with human language data.
- spacy - A library for industrial-strength natural language processing in Python and Cython.
- gensim - Topic Modeling for Humans.
- stanza - The Stanford NLP Group's official Python library, supporting 60+ languages.
- Chinese
Computer Vision
Libraries for Computer Vision.
- General
- opencv-python - Open Source Computer Vision Library.
- ultralytics - Ultralytics YOLO for object detection, segmentation, pose estimation, and classification with state-of-the-art accuracy and speed.
- kornia - Open Source Differentiable Computer Vision Library for PyTorch.
- fiftyone - The open-source tool for building high-quality datasets and computer vision models.
- OCR
- pytesseract - A wrapper for Google Tesseract OCR.
- easyocr - Ready-to-use OCR with 40+ languages supported.
Recommender Systems
Libraries for building recommender systems.
- annoy - Approximate Nearest Neighbors in C++/Python optimized for memory usage.
- implicit - A fast Python implementation of collaborative filtering for implicit datasets.
- scikit-surprise - A scikit for building and analyzing recommender systems.
Web Development
Web Frameworks
Traditional full stack web frameworks. Also see Web APIs.
- Synchronous
- flask - A microframework for Python.
- django - The most popular web framework in Python.
- bottle - A fast and simple micro-framework distributed as a single file with no dependencies.
- pyramid - A small, fast, down-to-earth, open source Python web framework.
- fasthtml - The fastest way to create an HTML app.
- Asynchronous
- starlette - A lightweight ASGI framework and toolkit for building high-performance async services.
- tornado - A web framework and asynchronous networking library.
- litestar - Production-ready, capable and extensible ASGI Web framework.
- reflex - A framework for building reactive, full-stack web applications entirely with Python.
Web APIs
Libraries for building RESTful, GraphQL, and RPC APIs.
- Django
- django-rest-framework - A powerful and flexible toolkit to build web APIs.
- django-ninja - Fast, Django REST framework based on type hints and Pydantic.
- strawberry-django - Strawberry GraphQL integration with Django.
- django-modern-rest - Modern REST with speed, types, async,
msgspec,pydanticand other goodies!
- Flask
- apiflask - A lightweight Python web API framework based on Flask and Marshmallow.
- Framework Agnostic
- fastapi - A modern, fast, web framework for building APIs with standard Python type hints.
- connexion - A spec-first framework that automatically handles requests based on your OpenAPI specification.
- strawberry - A GraphQL library that leverages Python type annotations for schema definition.
- RPC
- grpcio - HTTP/2-based RPC framework with Python bindings, built by Google.
Web Servers
ASGI and WSGI compatible web servers.
- ASGI
- WSGI
WebSocket
Libraries for working with WebSocket.
- websockets - A library for building WebSocket servers and clients with a focus on correctness and simplicity.
- channels - Developer-friendly asynchrony for Django.
- flask-socketio - Socket.IO integration for Flask applications.
- autobahn-python - WebSocket & WAMP for Python on Twisted and asyncio.
Template Engines
Libraries and tools for templating and lexing.
- jinja - A modern and designer friendly templating language.
- mako - Hyperfast and lightweight templating for the Python platform.
Web Asset Management
Tools for managing, storing, compressing and minifying website assets.
- django-storages - A collection of custom storage back ends for Django.
- django-compressor - Compresses linked and inline JavaScript or CSS into a single cached file.
Authentication
Libraries for implementing authentication schemes.
- OAuth
- oauthlib - A generic and thorough implementation of the OAuth request-signing logic.
- authlib - A comprehensive library for building OAuth, OpenID Connect, and JWT/JWS/JWE/JWK/JWA.
- django-allauth - Authentication app for Django that "just works."
- django-oauth-toolkit - OAuth 2 goodies for Django.
- JWT
- pyjwt - JSON Web Token implementation in Python.
- Permissions
- django-guardian - Implementation of per-object permissions for Django.
- django-rules - A tiny but powerful app providing object-level permissions to Django, without requiring a database.
Admin Panels
Libraries for administrative interfaces.
- flask-admin - Simple and extensible administrative interface framework for Flask.
- django-unfold - Elevate your Django admin with a stunning modern interface, powerful features, and seamless user experience.
- django-grappelli - A jazzy skin for the Django Admin-Interface.
CMS
Content Management Systems.
- wagtail - A Django content management system.
- django-cms - The easy-to-use and developer-friendly enterprise CMS powered by Django.
ERP
Enterprise resource planning frameworks.
- odoo - A suite of open source business apps: CRM, e-commerce, accounting, inventory, and thousands of community modules.
Static Site Generators
Static site generator is a software that takes some text + templates as input and produces HTML files on the output.
- pelican - Static site generator that supports Markdown and reST syntax.
- nikola - A static website and blog generator.
HTTP & Scraping
HTTP Clients
Libraries for working with HTTP.
- Clients
- requests - HTTP Requests for Humans.
- httpx - A next generation HTTP client for Python.
- aiohttp - Asynchronous HTTP client/server framework for asyncio and Python.
- urllib3 - A HTTP library with thread-safe connection pooling, file post support, sanity friendly.
- httpx2 - HTTP/1.1 and HTTP/2 client with sync and async APIs, maintained by Pydantic (httpx fork).
- URL Manipulation
- yarl - Yet another URL library.
Web Scraping
Libraries to automate web scraping and extract web content.
- Frameworks
- browser-use - Make websites accessible for AI agents with easy browser automation.
- scrapy - A fast high-level screen scraping and web crawling framework.
- crawl4ai - An open-source, LLM-friendly web crawler that provides lightning-fast, structured data extraction specifically designed for AI agents.
- Content Extraction
- feedparser - Universal feed parser.
- html2text - Convert HTML to Markdown-formatted text.
- trafilatura - A tool for gathering text and metadata from the web, with built-in content filtering.
Libraries for sending and parsing email, and mail server management.
- yagmail - Yet another Gmail/SMTP client.
Database & Storage
ORM
Libraries that implement Object-Relational Mapping or data mapping techniques.
- Relational Databases
- sqlalchemy - The Python SQL Toolkit and Object Relational Mapper.
- django.db.models - (part of Django) The Django ORM.
- peewee - A small, expressive ORM.
- sqlmodel - SQLModel is based on Python type annotations, and powered by Pydantic and SQLAlchemy.
- NoSQL Databases
- pynamodb - A Pythonic interface for Amazon DynamoDB.
- mongoengine - A Python Object-Document-Mapper for working with MongoDB.
- beanie - An asynchronous Python object-document mapper (ODM) for MongoDB.
Database Drivers
Libraries for connecting and operating databases.
- MySQL - awesome-mysql
- pymysql - A pure Python MySQL driver compatible to mysql-python.
- mysqlclient - MySQL connector with Python 3 support (mysql-python fork).
- PostgreSQL - awesome-postgres
- SQLite - awesome-sqlite
- sqlite3 - (Python standard library) SQLite interface compliant with DB-API 2.0.
- sqlite-utils - Python CLI utility and library for manipulating SQLite databases.
- ClickHouse
- clickhouse-connect - The official ClickHouse client, with SQLAlchemy and Superset connectors.
- clickhouse-driver - Python driver with native interface for ClickHouse.
- Other Relational Databases
- pyodbc - An ODBC bridge for connecting to SQL Server and any other ODBC-accessible database.
- oracledb - The official Python driver for Oracle Database, successor to cx_Oracle.
- mssql-python - Official Microsoft driver for SQL Server and Azure SQL, built on ODBC for high performance and low memory usage.
- NoSQL Databases
- redis - The Python client for Redis.
- pymongo - The official Python client for MongoDB.
- cassandra-driver - The Python Driver for Apache Cassandra.
- django-mongodb-backend - Official MongoDB database backend for Django.
Database
In-process databases usable directly from Python.
- Analytical
- duckdb - An in-process SQL OLAP database management system; optimized for analytics and fast queries, similar to SQLite but for analytical workloads.
- chdb - In-process OLAP SQL engine with the full ClickHouse dialect, zero-copy pandas/Arrow interop, and federation to remote ClickHouse clusters via
remoteSecure().
- Vector
- Key-Value & Document
- tinydb - A tiny, document-oriented database.
Caching
Libraries for caching data.
- cachetools - Extensible memoizing collections and decorators.
- diskcache - SQLite and file backed cache backend with faster lookups than memcached and redis.
- hishel - RFC 9111 compliant HTTP caching for httpx and requests, with sync and async support.
- dogpile.cache - dogpile.cache is a next generation replacement for Beaker made by the same authors.
- django-cacheops - A slick ORM cache with automatic granular event-driven invalidation.
Search
Libraries and software for indexing and performing search queries on data.
- elasticsearch - The official low-level Python client for Elasticsearch.
- opensearch-py - The official low-level Python client for OpenSearch.
- meilisearch - The official Python client for the Meilisearch search engine.
- django-haystack - Modular search for Django.
Serialization
Libraries for serializing complex data types.
- msgpack - MessagePack serializer implementation for Python.
- orjson - Fast, correct JSON library.
- marshmallow - A lightweight library for converting complex objects to and from simple Python datatypes.
- msgspec - A fast serialization and validation library with built-in support for JSON, MessagePack, YAML, and TOML.
Data & Science
Data Analysis
Libraries for data analysis.
- pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.
- polars - A fast DataFrame library implemented in Rust with a Python API.
- ibis-framework - A portable Python dataframe library with a single API for 20+ backends.
Data Ingestion / ETL
Libraries for data extraction, transformation, and loading pipelines across multiple sources and destinations.
- General
- awswrangler - Pandas integration with AWS services like Athena, Glue, Redshift, S3, and DynamoDB.
- dlt - A Python library for building data pipelines with automatic schema inference, incremental loading, and support for multiple sources and destinations.
- pathway - Python ETL framework for stream processing, real-time analytics, LLM pipelines, and RAG.
- Financial Data
- yfinance - Easy Pythonic way to download market and financial data from Yahoo Finance.
- akshare - A financial data interface library, built for human beings!
- edgartools - Library for downloading structured data from SEC EDGAR filings and XBRL financial statements.
- openbb - A financial data platform for analysts, quants and AI agents.
Data Validation
Libraries for validating data. Used for forms in many cases.
- pydantic - Data validation using Python type hints.
- jsonschema - An implementation of JSON Schema for Python.
- pandera - A data validation library for dataframes, with support for pandas, polars, and Spark.
Data Visualization
Libraries for visualizing data. Also see awesome-javascript.
- Plotting
- matplotlib - A Python 2D plotting library.
- plotly - Interactive graphing library for Python.
- seaborn - Statistical data visualization using Matplotlib.
- altair - Declarative statistical visualization library for Python.
- bokeh - Interactive Web Plotting for Python.
- Specialized
- cartopy - A cartographic python library with matplotlib support.
- pygraphviz - Python interface to Graphviz.
- graphify - Turn any folder of code, SQL schemas, docs, papers, images, or videos into a queryable knowledge graph.
- Dashboards and Apps
Geolocation
Libraries for geocoding addresses and working with latitudes and longitudes.
- geopandas - Python tools for geographic data (GeoSeries/GeoDataFrame) built on pandas.
- geopy - Python Geocoding Toolbox.
- geojson - Python bindings and utilities for GeoJSON.
- geodjango - (part of Django) A world-class geographic web framework.
Science
Libraries for scientific computing. Also see Python-for-Scientists.
- Core
- Symbolic Mathematics
- sympy - A Python library for symbolic mathematics.
- Statistics
- statsmodels - Statistical modeling and econometrics in Python.
- Biology and Chemistry
- Physics and Engineering
- Simulation and Modeling
- Graphs and Networks
- networkx - A high-productivity software for complex networks.
- Computational Geometry
- shapely - Manipulation and analysis of geometric objects in the Cartesian plane.
- Other
- colour-science - Implementing a comprehensive number of colour theory transformations and algorithms.
- manim - An animation engine for explanatory math videos.
Quantum Computing
Libraries for quantum computing.
- qiskit - An IBM-backed quantum SDK for building, simulating, and running circuits on real quantum hardware.
- qutip - Quantum Toolbox in Python.
- pennylane - A hybrid quantum-classical machine learning library with automatic differentiation support.
- cirq - A Google-developed framework focused on hardware-aware quantum circuit design for NISQ devices.
Developer Tools
Algorithms and Design Patterns
Python implementation of data structures, algorithms and design patterns. Also see awesome-algorithms.
- Algorithms
- sortedcontainers - Fast and pure-Python implementation of sorted collections.
- algorithms - Minimal examples of data structures and algorithms.
- thealgorithms - All Algorithms implemented in Python.
- Design Patterns
- transitions - A lightweight, object-oriented finite state machine implementation.
- python-patterns - A collection of design patterns in Python.
- python-statemachine - Expressive statecharts and finite state machines with a declarative API, in sync and async codebases.
Interactive Interpreter
Interactive Python interpreters (REPL).
- ipython - A powerful interactive Python shell, and the kernel behind Jupyter notebooks.
- jupyter - A rich toolkit to help you make the most out of using Python interactively.
- marimo - Transform data and train models, feels like a next-gen notebook, stored as Git-friendly Python.
- ptpython - Advanced Python REPL built on top of the python-prompt-toolkit.
Code Analysis
Tools of static analysis, linters and code quality checkers. Also see awesome-static-analysis.
- Code Analysis
- vulture - A tool for finding and analyzing dead Python code.
- prospector - A tool to analyze Python code.
- repowise - Codebase intelligence that indexes repos into dependency graphs, git history, and auto-generated docs with dead code detection.
- complexipy - Cognitive complexity analysis for Python code, written in Rust.
- Git Hooks
- pre-commit - A framework for managing and maintaining multi-language pre-commit hooks.
- Linters and Formatters
- ruff - An extremely fast Python linter and code formatter.
- black - The uncompromising Python code formatter.
- isort - A Python utility / library to sort imports.
- pylint - A fully customizable source code analyzer.
- flake8 - A wrapper around
pycodestyle,pyflakesand McCabe. - bandit - A tool designed to find common security issues in Python code.
- Refactoring
- rope - Rope is a python refactoring library.
- Type Checkers - awesome-python-typing
- Type Annotations Generators
- monkeytype - A system for Python that generates static type annotations by collecting runtime types.
Testing
Libraries for testing codebases and generating test data. Also see awesome-python-testing.
- Frameworks
- pytest - A mature full-featured Python testing tool.
- hypothesis - Hypothesis is an advanced Quickcheck style property based testing library.
- robotframework - A generic test automation framework.
- Test Runners
- Browser Automation
- playwright-python - Python version of the Playwright testing and automation library.
- selenium - Python bindings for Selenium WebDriver.
- seleniumbase - Python framework for web automation & testing, with stealth options.
- Load Testing
- locust - Scalable user load testing tool written in Python.
- API Testing
- schemathesis - A tool for automatic property-based testing of web applications built with Open API / Swagger specifications.
- Mock
- mock - (Python standard library) A mocking and patching library.
- responses - A utility library for mocking out the requests Python library.
- freezegun - Travel through time by mocking the datetime module.
- vcrpy - Record and replay HTTP interactions on your tests.
- respx - Mock HTTPX with awesome request patterns and response side effects.
- Object Factories
- factory_boy - A test fixtures replacement for Python.
- polyfactory - mock data generation library with support to classes (continuation of
pydantic-factories)
- Code Coverage
- coverage - Code coverage measurement.
- Fake Data
Debugging Tools
Libraries for debugging code.
- pdb-like Debugger
- Tracing
- hunter - A flexible code tracing toolkit.
- Profiler
- py-spy - A sampling profiler for Python programs. Written in Rust.
- memray - A memory profiler that tracks allocations in Python code, native extensions, and the interpreter itself.
- pyinstrument - A statistical wall-clock profiler with low overhead and readable call-tree output.
- scalene - A high-performance, high-precision CPU, GPU, and memory profiler for Python.
- Others
- django-debug-toolbar - Display various debug information for Django.
- icecream - Inspect variables, expressions, and program execution with a single, simple function call.
- flask-debugtoolbar - A port of the django-debug-toolbar to flask.
Build Tools
Compile software from source code. If you're looking for Python packaging/build tools, see Package Management.
- invoke - A tool for managing shell-oriented subprocesses and organizing executable Python code into CLI-invokable tasks.
- scons - A software construction tool.
- doit - A task runner and build tool.
Documentation
Libraries for generating project documentation.
- sphinx - Python Documentation generator.
- mkdocs-material - A documentation framework and Material Design theme built on MkDocs.
- diagrams - Diagram as Code.
- pdoc - Epydoc replacement to auto generate API documentation for Python libraries.
- zensical - A modern static site generator for technical documentation.
DevOps
DevOps Tools
Software and libraries for DevOps.
- Cloud Providers
- boto3 - Python interface to Amazon Web Services.
- awscli - Universal Command Line Interface for Amazon Web Services.
- azure-sdk-for-python - Microsoft Azure SDK for Python, published as per-service packages.
- google-cloud-python - Google Cloud client libraries for Python, published as per-service packages.
- Configuration Management
- ansible - A radically simple IT automation platform.
- cloud-init - A multi-distribution package that handles early initialization of a cloud instance.
- pyinfra - A versatile CLI tools and python libraries to automate infrastructure.
- salt - Infrastructure automation and management system.
- Deployment
- Monitoring and Processes
- psutil - A cross-platform process and system utilities module.
- sentry-sdk - Sentry SDK for Python.
- supervisor - Supervisor process control system for UNIX.
- flower - A real-time monitor and web admin for Celery task queues.
- sh - A full-fledged subprocess replacement for Python.
- Other
- borgbackup - A deduplicating archiver with compression and encryption.
- chaostoolkit - A Chaos Engineering toolkit & Orchestration for Developers.
Distributed Computing
Frameworks and libraries for Distributed Computing.
- ray - A system for parallel and distributed Python that unifies the machine learning ecosystem.
- pyspark - Apache Spark Python API.
- dask - A flexible parallel computing library for analytic computing.
- joblib - A set of tools to provide lightweight pipelining in Python.
- mpi4py - Python bindings for MPI.
Task Queues
Libraries for working with task queues.
- celery - An asynchronous task queue/job queue based on distributed message passing.
- rq - Simple job queues for Python.
- dramatiq - A fast and reliable background task processing library for Python 3.
- huey - Little multi-threaded task queue.
- taskiq - Distributed task queue with native asyncio support and pluggable brokers.
Messaging
Libraries for working with message brokers and event streaming.
- confluent-kafka - Confluent's Python client for Apache Kafka, built on librdkafka.
- pika - Pure-Python RabbitMQ/AMQP 0-9-1 client library.
- paho-mqtt - The Eclipse Paho MQTT client for Python.
- faststream - A framework for building asynchronous services over Apache Kafka, RabbitMQ, NATS, MQTT and Redis.
Job Schedulers
Libraries for scheduling jobs.
- Task Scheduling
- apscheduler - A light but powerful in-process task scheduler that lets you schedule functions.
- schedule - Python job scheduling for humans.
- Workflow Orchestration
- apache-airflow - Airflow is a platform to programmatically author, schedule and monitor workflows.
- prefect - A modern workflow orchestration framework that makes it easy to build, schedule and monitor robust data pipelines.
- dagster - An orchestration platform for the development, production, and observation of data assets.
Logging
Libraries for generating and working with logs.
- logging - (Python standard library) Logging facility for Python.
- structlog - Structured logging made easy.
- loguru - Library which aims to bring enjoyable logging in Python.
Network Virtualization
Tools and libraries for Virtual Networking and SDN (Software Defined Networking).
- scapy - A brilliant packet manipulation library.
- napalm - Cross-vendor API to manipulate network devices.
CLI & GUI
CLI Development
Libraries for building command-line applications.
- CLI Development
- argparse - (Python standard library) Command-line option and argument parsing.
- click - A package for creating beautiful command line interfaces in a composable way.
- typer - Modern CLI framework that uses Python type hints. Built on Click and Pydantic.
- prompt_toolkit - A library for building powerful interactive command lines.
- fire - A library for creating command line interfaces from absolutely any Python object.
- Terminal Rendering
- tqdm - Fast, extensible progress bar for loops and CLI.
- rich - Python library for rich text and beautiful formatting in the terminal. Also provides a great
RichHandlerlog handler. - colorama - Cross-platform colored terminal text.
- alive-progress - A new kind of Progress Bar, with real-time throughput, eta and very cool animations.
- TUI Frameworks
- textual - A framework for building interactive user interfaces that run in the terminal and the browser.
- urwid - A library for creating terminal GUI applications with strong support for widgets, events, rich colors, etc.
- asciimatics - A package to create full-screen text UIs (from interactive forms to ASCII animations).
CLI Tools
Useful CLI-based tools.
- Database CLIs
- Downloaders
- yt-dlp - A command-line program to download videos from YouTube and other video sites, a fork of youtube-dl.
- HTTP Clients
- httpie - A command line HTTP client, a user-friendly cURL replacement.
- Project Scaffolding
- cookiecutter - A command-line utility that creates projects from cookiecutters (project templates).
- copier - A library and command-line utility for rendering projects templates.
- Shells
- xonsh - A Python-powered shell. Full-featured and cross-platform.
- Terminal Workflow
GUI Development
Libraries for working with graphical user interface applications.
- Desktop
- pygobject - Python Bindings for GLib/GObject/GIO/GTK+ (GTK+3).
- wxPython - A blending of the wxWidgets C++ class library with the Python.
- kivy - A library for creating NUI applications, running on Windows, Linux, Mac OS X, Android and iOS.
- dearpygui - A Simple GPU accelerated Python GUI framework
- toga - A Python native, OS native GUI toolkit.
- Qt
- Tkinter
- tkinter - (Python standard library) The standard Python interface to the Tcl/Tk GUI toolkit.
- customtkinter - A modern and customizable python UI-library based on Tkinter.
- tkdesigner - Generates Tkinter interfaces from Figma designs using the Figma API.
- Web-based
- Wrappers
- gooey - Turn command line programs into a full GUI application with one line.
Text & Documents
Text Processing
Libraries for parsing and manipulating plain texts.
- Encoding and Unicode
- charset-normalizer - Universal character encoding detector, the default of the requests ecosystem.
- chardet - Python character encoding detector.
- ftfy - Makes Unicode text less broken and more consistent automagically.
- Fuzzy Matching
- rapidfuzz - Rapid fuzzy string matching using various string metrics, with a C++ core.
- General
- Internationalization
- babel - An internationalization library for Python.
- Parser
- pygments - A generic syntax highlighter.
- pyparsing - A general purpose framework for generating parsers.
- sqlparse - A non-validating SQL parser.
- phonenumbers - Parsing, formatting, storing and validating international phone numbers.
- parsy - Easy, generic parser combinator library for creating parsers.
- Transliteration and Slugs
- python-slugify - A Python slugify library that translates unicode to ASCII.
- unidecode - ASCII transliterations of Unicode text.
- Unique identifiers
HTML Manipulation
Libraries for working with HTML and XML.
- beautifulsoup4 - Providing Pythonic idioms for iterating, searching, and modifying HTML or XML.
- lxml - A very fast, easy-to-use and versatile library for handling HTML and XML.
- xmltodict - Working with XML feel like you are working with JSON.
- markupsafe - Implements a XML/HTML/XHTML Markup safe string for Python.
- justhtml - A pure Python HTML5 parser that just works.
File Format Processing
Libraries for parsing and manipulating specific text formats.
- General
- pyelftools - Parsing and analyzing ELF files and DWARF debugging information.
- tablib - A module for Tabular Datasets in XLS, CSV, JSON, YAML.
- File Conversion
- markitdown - Python tool for converting files and office documents to Markdown.
- docling - Library for converting documents into structured data.
- Excel
- openpyxl - A library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files.
- xlsxwriter - A Python module for creating Excel .xlsx files.
- Word
- python-docx - Reads, queries and modifies Microsoft Word 2007/2008 docx files.
- PowerPoint
- python-pptx - Python library for creating and updating PowerPoint (.pptx) files.
- PDF
- pypdf - A library capable of splitting, merging, cropping, and transforming PDF pages.
- reportlab - Allowing Rapid creation of rich PDF documents.
- pdfminer.six - Pdfminer.six is a community maintained fork of the original PDFMiner.
- HTML-to-PDF
- weasyprint - A visual rendering engine for HTML and CSS that can export to PDF.
- Markdown
- markdown-it-py - Markdown parser with 100% CommonMark support, extensions, and syntax plugins.
- markdown - A Python implementation of John Gruberâs Markdown.
- mistune - Fastest and full featured pure Python parsers of Markdown.
- Data Formats
File Manipulation
Libraries for file manipulation.
- mimetypes - (Python standard library) Map filenames to MIME types.
- pathlib - (Python standard library) A cross-platform, object-oriented path library.
- watchfiles - Simple, modern and fast file watching and code reload in python.
- watchdog - API and shell utilities to monitor file system events.
- python-magic - A Python interface to the libmagic file type identification library.
Media
Image Processing
Libraries for manipulating images.
- Barcodes and QR Codes
- qrcode - A pure Python QR Code generator.
- python-barcode - Create barcodes in Python with no extra dependencies.
- General
- pillow - Pillow is the friendly PIL fork.
- scikit-image - A Python library for (scientific) image processing.
- rembg - A tool to remove image backgrounds.
- wand - Python bindings for MagickWand, C API for ImageMagick.
- pyvips - A fast image processing library with low memory needs.
- Image Serving
- thumbor - A smart imaging service. It enables on-demand crop, re-sizing and flipping of images.
Audio & Video Processing
Libraries for manipulating audio, video, and their metadata.
- Audio
- Video
- Metadata
- mutagen - A Python module to handle audio metadata.
- tinytag - A library for reading music meta data of MP3, OGG, FLAC and Wave files.
- beets - A music library manager and MusicBrainz tagger.
Game Development
Awesome game development libraries.
- 3D Engines
- panda3d - 3D game engine developed by Disney.
- Game Frameworks
- pygame - Pygame is a set of Python modules designed for writing games.
- pyglet - A cross-platform windowing and multimedia library for Python.
- pygame-ce - An actively developed drop-in replacement with new features and performance improvements (pygame fork).
- arcade - Arcade is a modern Python framework for crafting games with compelling graphics and sound.
- Visual Novels
- renpy - A Visual Novel engine.
Python Language
Implementations
Implementations of Python.
- cpython - Default, most widely used implementation of the Python programming language written in C.
- micropython - A lean and efficient Python programming language implementation.
- pypy - A very fast and compliant implementation of the Python language.
- Cython - Optimizing Static Compiler for Python.
- pyodide - Python distribution for the browser and Node.js based on WebAssembly.
Built-in Classes Enhancement
Libraries for enhancing Python built-in classes.
- attrs - Replacement for
__init__,__eq__,__repr__, etc. boilerplate in class definitions. - bidict - Efficient, Pythonic bidirectional map data structures and related functionality.
- uuid-utils - A fast, Rust-backed drop-in replacement for Python's built-in
uuidmodule, supporting RFC 9562 (UUIDv6, UUIDv7, and UUIDv8). - python-box - Python dictionaries with advanced dot notation access.
Functional Programming
Functional Programming with Python.
- functools - (Python standard library) Higher-order functions and operations on callable objects.
- more-itertools - More routines for operating on iterables, beyond
itertools. - toolz - A collection of functional utilities for iterators, functions, and dictionaries. Also available as cytoolz for Cython-accelerated performance.
- funcy - A fancy and practical functional tools.
- returns - A set of type-safe monads, transformers, and composition utilities.
Asynchronous Programming
Libraries for asynchronous, concurrent and parallel execution. Also see awesome-asyncio.
- Async I/O
- asyncio - (Python standard library) Asynchronous I/O, event loop, coroutines and tasks.
- anyio - A high-level async concurrency and networking framework that works on top of asyncio or trio.
- uvloop - Ultra fast asyncio event loop.
- trio - A friendly library for async concurrency and I/O.
- gevent - A coroutine-based Python networking library that uses greenlet.
- Twisted - An event-driven networking engine.
- Parallelism
- concurrent.futures - (Python standard library) A high-level interface for asynchronously executing callables.
- multiprocessing - (Python standard library) Process-based parallelism.
Date and Time
Libraries for working with dates and times.
- zoneinfo - (Python standard library) IANA time zone support. Brings the tz database into Python.
- python-dateutil - Extensions to the standard Python datetime module.
- dateparser - A Python parser for human-readable dates in dozens of languages.
- pendulum - Python datetimes made easy.
- whenever - A modern datetime library, type-safe and DST-safe, backed by Rust.
Python Toolchain
Environment Management
Libraries for Python version and virtual environment management.
- virtualenv - A tool to create isolated Python environments.
- uv - An extremely fast Python version, package and project manager, written in Rust.
- pyenv - Simple Python version management.
Package Management
Libraries for package and dependency management.
- Package Managers
- pip - The package installer for Python.
- uv - An extremely fast Python version, package and project manager, written in Rust.
- poetry - Python dependency management and packaging made easy.
- hatch - Modern, extensible Python project manager for environments, builds, and publishing.
- pipx - Install and Run Python Applications in Isolated Environments. Like
npxin Node.js. - conda - Cross-platform, Python-agnostic binary package manager.
- Build Backends
- setuptools - The historical and still most widely used pyproject build backend.
- hatchling - Modern, extensible build backend from the hatch project.
- uv-build - uv's fast, minimal build backend for pure-Python projects.
Package Repositories
Local PyPI repository server and proxies.
- bandersnatch - PyPI mirroring tool provided by Python Packaging Authority (PyPA).
- devpi - PyPI server and packaging/testing/release tool.
- warehouse - Next generation Python Package Repository (PyPI).
Distribution
Libraries to create packaged executables for release distribution.
- Executables
- pyinstaller - Converts Python programs into stand-alone executables (cross-platform).
- Nuitka - Compiles Python programs into high-performance standalone executables (cross-platform, supports all Python versions).
- shiv - A command line utility for building fully self-contained zipapps (PEP 441), but with all their dependencies included.
- cx-Freeze - It is a Python tool that converts Python scripts into standalone executables and installers for Windows, macOS, and Linux.
- Obfuscation
- pyarmor - A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.
Configuration Files
Libraries for storing and parsing configuration options.
- configparser - (Python standard library) INI file parser.
- python-dotenv - Reads key-value pairs from a
.envfile and sets them as environment variables. - pydantic-settings - Settings management using Pydantic models with validation, loading from environment variables and secrets files.
- hydra-core - Hydra is a framework for elegantly configuring complex applications.
- dynaconf - Dynaconf is a configuration manager with plugins for Django, Flask and FastAPI.
Security
Cryptography
Libraries for cryptographic primitives and secure protocols.
- cryptography - A package designed to expose cryptographic primitives and recipes to Python developers.
- pynacl - Python binding to the Networking and Cryptography (NaCl) library.
- paramiko - The leading native Python SSHv2 protocol library.
- itsdangerous - Various helpers to pass trusted data to untrusted environments.
Penetration Testing
Frameworks and tools for penetration testing.
- mitmproxy - An interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.
- sqlmap - Automatic SQL injection and database takeover tool.
- sherlock-project - Hunt down social media accounts by username across social networks.
- social-engineer-toolkit - A toolkit for social engineering.
Supply Chain Security
Tools for auditing dependencies against known vulnerabilities.
- pip-audit - Audits Python environments and dependency trees for known vulnerabilities, using the PyPI Advisory Database and OSV.
- uv-audit - (part of uv) uv's dependency vulnerability and malware scanning backed by OSV.
Web Security
Libraries for application-layer web security.
- secure - HTTP security headers for Python web applications with ASGI and WSGI middleware.
Other
Hardware
Libraries for programming with hardware.
- bleak - A cross platform Bluetooth Low Energy Client for Python using asyncio.
- pynput - A library to control and monitor input devices.
- jumpstarter - A hardware-in-the-loop testing framework with a Python client library for automated testing on real and virtual hardware.
Microsoft Windows
Python programming on Microsoft Windows.
- pythonnet - Python Integration with the .NET Common Language Runtime (CLR).
- pywin32 - Python Extensions for Windows.
- pyenv-win - A Python version manager for Windows (pyenv fork).
- winpython - Portable development environment for Windows 10/11.
Miscellaneous
Useful libraries or tools that don't fit in the categories above.
- blinker - A fast Python in-process signal/event dispatching system.
- boltons - A set of pure-Python utilities.
Resources
Where to discover learning resources or new Python libraries.
Newsletters
Podcasts
Websites
- Python Developer Tooling Handbook - Comprehensive guide to modern Python developer tools covering package management, linting, type checking, testing, and more.
Contributing
Your contributions are always welcome! Please take a look at the contribution guidelines first.
If you have any question about this opinionated list, do not hesitate to contact @vinta on X (Twitter).
Top Related Projects
😎 Awesome lists about all kinds of interesting topics
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
Curated list of project-based tutorials
:books: Freely available programming books
A complete computer science study plan to become a software engineer.
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot