A lazygit-style TUI for Python package management using pip
Project description
LazyPip ๐โก
A lazygit-style TUI for Python package management using pip. Navigate, install, upgrade, and manage your Python packages with an intuitive terminal interface.
๐ Features
- Intuitive TUI - Navigate packages with vim-like keybindings
- Real-time Package Status - See installed, outdated, and available packages
- Quick Actions - Install, upgrade, uninstall with single keystrokes
- Package Details - View comprehensive package information
- Bulk Operations - Upgrade all outdated packages at once
- Requirements Management - Install from requirements.txt
- Search & Filter - Find packages quickly
- Keyboard-First - Designed for efficiency and speed
Example
โโ LazyPip - Python Package Manager โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Installed (142) โ Package Details โ
โโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Status โ Package โ requests โ โ
โ โ โ requests โ โ
โ โ โ numpy โ Version: 2.31.0 โ
โ โ โ flask โ Latest: 2.31.0 โ
โ โ โ django โ โ
โ โ โ pytest โ Summary: Python HTTP for Humans. โ
โ โ โ โ
โ โ โ Location: /usr/local/lib/python3.11 โ
โ โ โ โ
โ โ โ Requires: โ
โ โ โ โข urllib3>=1.21.1,<3 โ
โ โ โ โข idna>=2.5,<4 โ
โ โ โ โข certifi>=2017.4.17 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [16:30:15] Ready โ [i]nstall [u]pgrade [d]elete [s]how โ
โโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Installation
Prerequisites
- Python 3.8 or higher
- pip (Python package installer)
Install from PyPI (Recommended)
pip install lazypip
Install from Source
git clone https://github.com/playfairs/lazypip.git
cd lazypip
pip install -e .
Development Installation
git clone https://github.com/playfairs/lazypip.git
cd lazypip
pip install -e ".[dev]"
Usage
Start LazyPip from your terminal:
lazypip
Keyboard Shortcuts
Navigation
โโorjk- Navigate package listTab- Switch between panelsEnterorSpace- Select package
Package Management
i- Install new packageu- Upgrade selected packaged- Uninstall selected packages- Show package detailsCtrl+A- Upgrade all outdated packages
Application
r- Refresh package lists/- Search packagesf- Show freeze output (requirements)Ctrl+R- Install from requirements.txtqorCtrl+C- Quit
Tabs
LazyPip organizes packages into three main tabs:
- Installed - All currently installed packages
- Outdated - Packages with available updates
- Search - Search for new packages to install
Package Status Indicators
โ- Package is installed and up-to-dateโ- Package is installed but outdatedโ- Package is not installed?- Package status unknown
Themes
LazyPip supports multiple themes:
- Dark Theme (default) - Easy on the eyes for long sessions
- Light Theme - For bright environments
- High Contrast - Accessibility-focused theme
Project Structure
lazypip/
โโโ src/
โ โโโ lazypip/
โ โโโ __init__.py
โ โโโ __main__.py # Application entry point
โ โโโ app.py # Main Textual app
โ โโโ theme.py # CSS styling
โ โโโ core/
โ โ โโโ pip_api.py # Pip command wrapper
โ โ โโโ installer.py # Package installation logic
โ โ โโโ parser.py # Output parsing utilities
โ โโโ tui/
โ โโโ screens/
โ โ โโโ main.py # Main application screen
โ โ โโโ install_dialog.py
โ โ โโโ confirmation_dialog.py
โ โโโ widgets/
โ โโโ package_list.py # Package list widget
โ โโโ package_details.py # Package details panel
โ โโโ status_bar.py # Status bar widget
โโโ tests/ # Test suite
โโโ requirements.txt
โโโ pyproject.toml
โโโ README.md
Testing
Run the test suite:
# Install test dependencies
pip install -e ".[test]"
# Run tests
pytest
# Run with coverage
pytest --cov=lazypip
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Development Setup
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/lazypip.git - Create a virtual environment:
python -m venv venv - Activate it:
source venv/bin/activate(Linux/Mac) orvenv\Scripts\activate(Windows) - Install in development mode:
pip install -e ".[dev]" - Run tests:
pytest
Code Style
This project uses:
Format code before committing:
black src/ tests/
flake8 src/ tests/
mypy src/
Bug Reports & Feature Requests
Please use the GitHub Issues page to report bugs or request features.
Acknowledgments
- Inspired by lazygit - The best git TUI
- Built with Textual - Amazing Python TUI framework
- Styled with Rich - Beautiful terminal formatting
Roadmap
- Package dependency visualization
- Virtual environment management
- Package vulnerability scanning
- Custom package sources support
- Export/import package lists
- Package usage statistics
- Plugin system
- Configuration file support
Similar Projects
- lazygit - Git TUI (Inspiration to the TUI)
- lazyvim - Lazy Vim (Inspiration to the name)
- pip-tools - pip dependency management
- pipx - Install Python applications in isolated environments
- pypi - Python Package Index - pip itself
Made with โค๏ธ for the Python community
If you find LazyPip useful, please consider giving it a โญ on GitHub!# -lazypip
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lazypip-0.1.1.tar.gz.
File metadata
- Download URL: lazypip-0.1.1.tar.gz
- Upload date:
- Size: 34.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bc566ce41b13244e35aa2fdbfa4f31f14ef9a04345b8da01679982970871b1d
|
|
| MD5 |
65ac542ae84678dbee2979e53b1fce39
|
|
| BLAKE2b-256 |
8c011723fc7dff52efdd8dabf5a0713416ab55500f41f456f5f22714b2f3fb87
|
File details
Details for the file lazypip-0.1.1-py3-none-any.whl.
File metadata
- Download URL: lazypip-0.1.1-py3-none-any.whl
- Upload date:
- Size: 35.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df06de2d60bc612e9b8bd3dfb519e87f36b42cadb942785f5f5edad9d43bc2e1
|
|
| MD5 |
9d1b7f6931a807729cc5ad1ce75804f9
|
|
| BLAKE2b-256 |
a8bf851fed972acf37656a8c2edc0af2188e1819fb6dc50bf2b49bd4d8e41a5d
|