A command-line tool that combines package installation and requirements.txt management. Install, update, or remove Python packages and their dependencies with automatic requirements.txt handling.
Compatible with Python 3.11, 3.12, and 3.13.
- Single command for package management and requirements.txt updates
- Smart dependency handling for installation and removal
- Dependency analysis to prevent breaking other packages
- Flexible version specifications (
>=
by default) - Optional exact version pinning (
==
) - Clean, informative output with version information
- Preserves requirements.txt comments and formatting
- Creates requirements.txt if it doesn't exist
- Support for custom requirements file paths
- Smart detection of multiple requirements files
- Full support for Python 3.11, 3.12, and 3.13
It's recommended to install pip-add within a virtual environment to avoid conflicts with system packages:
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install from PyPI
pip install pip-add
# Or install latest version
pip install --upgrade pip-add
For global installation (use with caution), you can install with pipx:
# Install globally using pipx
pipx install pip-add
# Basic package installation
pip-add requests
# Output:
# Installing requests...
# ✓ Successfully installed requests (2.32.3)
# ✓ Updated requirements.txt
# Install with exact version
pip-add -e requests
# Adds: requests==2.32.3 to requirements.txt
# Install with dependencies
pip-add -d requests
# Output:
# Installing requests...
# ✓ Successfully installed:
# - certifi (2024.8.30)
# - charset-normalizer (3.4.0)
# - idna (3.10)
# - requests (2.32.3)
# - urllib3 (2.2.3)
# ✓ Updated requirements.txt
# Install using custom requirements file
pip-add -f requirements/dev.txt requests
# Output:
# Installing requests...
# ✓ Successfully installed requests (2.32.3)
# ✓ Updated requirements/dev.txt
When multiple requirements files are found in your project:
# Tool will show available files:
pip-add requests
# Output:
# ℹ️ Found multiple requirements files:
# - requirements.txt
# - requirements/dev.txt
# - requirements/prod.txt
#
# Using: requirements.txt
# To use a specific file, run the command with -f/--requirements-file option:
# Example: pip-add -f requirements/dev.txt requests
# Specify which file to use:
pip-add -f requirements/dev.txt requests
# Remove single package
pip-add -r requests
# Output:
# Removing packages...
# ✓ Successfully uninstalled requests (2.32.3)
# ✓ Updated requirements.txt
# Remove package and its unused dependencies
pip-add -d -r requests
# Output:
# Removing packages...
# ✓ Successfully uninstalled:
# - certifi (2024.8.30)
# - charset-normalizer (3.4.0)
# - requests (2.32.3)
# - urllib3 (2.2.3)
#
# ℹ️ Dependencies kept (required by other packages):
# - idna (needed by: email-validator, cryptography)
#
# ✓ Updated requirements.txt
# Remove from specific requirements file
pip-add -r -f requirements/dev.txt requests
# Output:
# Removing packages...
# ✓ Successfully uninstalled requests (2.32.3)
# ✓ Updated requirements/dev.txt
pip-add [-h] [-d] [-e] [-r] [-f REQUIREMENTS_FILE] package
positional arguments:
package Package to install or remove
options:
-h, --help show this help message and exit
-d, --dependencies Include dependencies when installing or removing
-e, --exact Use == instead of >= for version specification
-r, --remove Remove package(s) and their entries from requirements.txt
-f, --requirements-file
Path to custom requirements.txt file
- Installs the specified package using pip
- Retrieves installed version information
- With
-d
: tracks and installs all dependencies - Updates requirements.txt (or specified requirements file) with new package(s)
- Uses
>=
by default or==
with-e
flag
- Analyzes package dependencies
- Identifies which dependencies are safe to remove
- Checks if any dependencies are needed by other packages
- Safely removes unused packages
- Updates requirements.txt (or specified requirements file)
- Reports kept dependencies and their dependents
- By default, looks for requirements.txt in the current directory
- Creates requirements.txt if it doesn't exist
- With
-f
: uses specified requirements file path - Creates directories if needed for custom file paths
- Preserves comments and formatting in existing files
- When multiple files are found:
- Lists all available requirements files
- Shows which file will be used by default
- Provides example command to specify a particular file
The tool is designed to safely handle dependencies:
- Installation: Records all dependencies when using
-d
- Removal: Only removes dependencies that aren't needed by other packages
- Analysis: Shows which dependencies were kept and why
- Protection: Prevents breaking other installed packages
- Python 3.11, 3.12, or 3.13
- pip
- setuptools
# First time setup
pip-add flask
# Creates requirements.txt and adds Flask
pip-add -d flask
# Creates requirements.txt and adds Flask with dependencies
# Multiple requirements files
pip-add -f requirements/dev.txt pytest
pip-add -f requirements/prod.txt gunicorn
# Manages separate requirement files for different environments
# Update with newer versions
pip-add requests
# Updates to newest version with >= specification
# Remove package and unused dependencies
pip-add -d -r flask
# Removes Flask and dependencies not used by other packages
-
Package not found in requirements.txt
- The file will be created automatically
- Existing comments are preserved
- Use
-f
to specify a different requirements file
-
Dependency conflicts
- Uses
>=
by default to minimize conflicts - Use
-e
for exact versions when needed
- Uses
-
Dependencies not removing
- Check the output for dependencies kept
- Tool will show which packages need them
-
Multiple requirements files
- Tool will list all available requirements files
- Shows which file will be used by default
- Provides example command to specify a particular file
- Use
-f
to specify which file to use