Skip to main content

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.

Python Version License: GPL-3.0 Code Style: Black

๐Ÿš€ 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

  • โ†‘โ†“ or jk - Navigate package list
  • Tab - Switch between panels
  • Enter or Space - Select package

Package Management

  • i - Install new package
  • u - Upgrade selected package
  • d - Uninstall selected package
  • s - Show package details
  • Ctrl+A - Upgrade all outdated packages

Application

  • r - Refresh package lists
  • / - Search packages
  • f - Show freeze output (requirements)
  • Ctrl+R - Install from requirements.txt
  • q or Ctrl+C - Quit

Tabs

LazyPip organizes packages into three main tabs:

  1. Installed - All currently installed packages
  2. Outdated - Packages with available updates
  3. 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

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/yourusername/lazypip.git
  3. Create a virtual environment: python -m venv venv
  4. Activate it: source venv/bin/activate (Linux/Mac) or venv\Scripts\activate (Windows)
  5. Install in development mode: pip install -e ".[dev]"
  6. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lazypip-0.1.1.tar.gz (34.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lazypip-0.1.1-py3-none-any.whl (35.9 kB view details)

Uploaded Python 3

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

Hashes for lazypip-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4bc566ce41b13244e35aa2fdbfa4f31f14ef9a04345b8da01679982970871b1d
MD5 65ac542ae84678dbee2979e53b1fce39
BLAKE2b-256 8c011723fc7dff52efdd8dabf5a0713416ab55500f41f456f5f22714b2f3fb87

See more details on using hashes here.

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

Hashes for lazypip-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 df06de2d60bc612e9b8bd3dfb519e87f36b42cadb942785f5f5edad9d43bc2e1
MD5 9d1b7f6931a807729cc5ad1ce75804f9
BLAKE2b-256 a8bf851fed972acf37656a8c2edc0af2188e1819fb6dc50bf2b49bd4d8e41a5d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page