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.0.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.0-py3-none-any.whl (35.8 kB view details)

Uploaded Python 3

File details

Details for the file lazypip-0.1.0.tar.gz.

File metadata

  • Download URL: lazypip-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 dcd891149b6b24b092e9fe0617228b48060205a28051c0e737070dae230282b3
MD5 977b7ce3c22a1a76af6381068b4f0366
BLAKE2b-256 110977daa88734223e50770169aecef2de891907cd5a18e1dbd1ff536f6fa26d

See more details on using hashes here.

File details

Details for the file lazypip-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: lazypip-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 35.8 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 85f02eecee2d993505bd422ebc5dc3745d838614ca12b402e7f368be3f214cd5
MD5 6d75626c8bba81422763ae6a7e60299f
BLAKE2b-256 157e1d89079e00298e0b58f341e610f5438e92f5274b121b32e27c7a627e72a0

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