Skip to content

Requirements

Here is an example of a requirements.txt file for a Django project, along with explanations for why each package is used:

Base Requirements

  • Django: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
  • django-cors-headers: A Django app for handling the server headers required for Cross-Origin Resource Sharing (CORS).
  • django-environ: A Django library for managing environment variables.
  • django-templated-mail: A Django app to send emails using templates.
  • djangorestframework: A powerful and flexible toolkit for building Web APIs in Django.
  • django-filter: A Django app for adding dynamic queryset filtering from URL parameters.
  • drf-spectacular: A tool for OpenAPI 3 schema generation for Django REST Framework.
  • drf-spectacular-sidecar: A companion package for drf-spectacular to handle static file dependencies.
  • djoser: A library providing a set of Django REST Framework views to handle authentication.
  • djangorestframework-simplejwt: A JSON Web Token authentication backend for the Django REST Framework.
  • oauthlib: A generic and thorough implementation of the OAuth request-signing logic.
  • PyJWT: A Python library for JSON Web Token encoding and decoding.
  • requests: A simple and elegant HTTP library for Python.
  • requests-oauthlib: An OAuthlib extension to support OAuth for HTTP requests.
  • social-auth-app-django: A Django library for social authentication.
  • social-auth-core: A core library for social authentication providers.
  • argon2-cffi: A Python binding for the Argon2 password hashing algorithm.
  • argon2-cffi-bindings: Low-level CFFI bindings for Argon2.
  • cryptography: A package designed to expose cryptographic recipes and primitives to Python developers.
  • python3-openid: A set of Python libraries to implement OpenID in applications.
  • django-redis: A Django cache backend for Redis.
  • redis: A Python client for Redis.
  • django-prometheus: A Django app to monitor Django projects with Prometheus.
  • pillow: A Python Imaging Library (PIL) fork for opening, manipulating, and saving many different image file formats.
  • django-import-export: A Django library that allows importing and exporting data with admin integration.
  • asgiref: ASGI (Asynchronous Server Gateway Interface) reference implementation.
  • attrs: A library for creating classes with automatically added special methods.
  • certifi: A library for providing Mozilla’s CA Bundle.
  • charset-normalizer: A library for character encoding detection.
  • defusedxml: A library to prevent XML bomb attacks.
  • inflection: A library for converting words between singular and plural forms, and for other word transformations.
  • idna: A library for Internationalized Domain Names in Applications (IDNA).
  • mccabe: A tool for checking the McCabe complexity of code.
  • packaging: A library for dealing with Python packages.
  • pycodestyle: A tool to check Python code against the PEP 8 style guide.
  • pycparser: A C parser and AST generator written in Python.
  • pyflakes: A tool to check Python source files for errors.
  • urllib3: A powerful, user-friendly HTTP client for Python.
  • cffi: A Foreign Function Interface for Python calling C code.
  • pytz: A library for accurate and cross-platform timezone calculations.
  • tzdata: IANA time zone database for Python.
  • jsonschema: A library for validating JSON schemas.
  • jsonschema-specifications: A collection of JSON Schema meta-schemas.
  • Markdown: A Python implementation of Markdown.
  • sqlparse: A non-validating SQL parser for Python.
  • swagger-spec-validator: A tool to validate Swagger specifications.
  • PyYAML: A YAML parser and emitter for Python.
  • referencing: A library for referencing JSON schemas.
  • rpds-py: A library for Python bindings for Rust's rpds (persistent data structures).
  • uritemplate: A Python implementation of RFC 6570 URI templates.
  • typing_extensions: Backported and experimental type hints for Python.
  • async-timeout: A timeout context manager for asyncio.

Local Requirements

  • psycopg: The new generation PostgreSQL adapter for Python, providing asynchronous and efficient access to PostgreSQL databases.
  • psycopg2-binary: A binary package for psycopg2, the older PostgreSQL adapter for Python, providing fast and secure access to PostgreSQL databases.
  • ruff: A fast Python linter and code formatting tool aimed at enforcing code quality and style guidelines.
  • coverage: A tool for measuring code coverage of Python programs, useful for testing and ensuring that code paths are exercised.
  • flake8: A wrapper around PyFlakes, pycodestyle, and Ned Batchelder’s McCabe script, combining their functionalities to check the style and quality of Python code.
  • pre-commit: A framework for managing and maintaining multi-language pre-commit hooks, ensuring code quality before committing changes.
  • factory-boy: A library for generating test data, allowing the creation of fixtures for testing Django applications.

Production Requirements

  • gunicorn: A Python WSGI HTTP Server for UNIX, commonly used to serve Python web applications like Django in production. It is designed to be lightweight and fast, handling concurrent requests efficiently.
  • psycopg-binary: A binary package for psycopg, the PostgreSQL adapter for Python, providing asynchronous and efficient access to PostgreSQL databases.
  • django-storages: A collection of custom storage backends for Django, allowing integration with various storage solutions like Amazon S3, Google Cloud Storage, and others, to store and serve files efficiently.