lazypip


Namelazypip JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryA lazygit-style TUI for Python package management using pip
upload_time2025-08-03 18:49:53
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseGPL-3.0
keywords pip tui package-manager python lazygit terminal
VCS
bugtrack_url
requirements textual requests rich click
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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](https://img.shields.io/badge/python-3.8+-blue.svg)](https://python.org)
[![License: GPL-3.0](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.en.html)
[![Code Style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/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)

```bash
pip install lazypip
```

### Install from Source

```bash
git clone https://github.com/playfairs/lazypip.git
cd lazypip
pip install -e .
```

### Development Installation

```bash
git clone https://github.com/playfairs/lazypip.git
cd lazypip
pip install -e ".[dev]"
```

## Usage

Start LazyPip from your terminal:

```bash
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:

```bash
# 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:
- [Black](https://github.com/psf/black) for code formatting
- [Flake8](https://flake8.pycqa.org/) for linting
- [MyPy](https://mypy.readthedocs.io/) for type checking

Format code before committing:
```bash
black src/ tests/
flake8 src/ tests/
mypy src/
```

## Bug Reports & Feature Requests

Please use the [GitHub Issues](https://github.com/playfairs/lazypip/issues) page to report bugs or request features.

## Acknowledgments

- Inspired by [lazygit](https://github.com/jesseduffield/lazygit) - The best git TUI
- Built with [Textual](https://github.com/Textualize/textual) - Amazing Python TUI framework
- Styled with [Rich](https://github.com/Textualize/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](https://github.com/jesseduffield/lazygit) - Git TUI (Inspiration to the TUI)
- [lazyvim](https://www.lazyvim.org/) - Lazy Vim (Inspiration to the name)
- [pip-tools](https://github.com/jazzband/pip-tools) - pip dependency management
- [pipx](https://github.com/pypa/pipx) - Install Python applications in isolated environments
- [pypi](https://pypi.org/) - Python Package Index - pip itself

---

**Made with ❤️ for the Python community**

If you find LazyPip useful, please consider giving it a ⭐ on GitHub!# -lazypip

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "lazypip",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "playfairs <root@playfairs.cc>",
    "keywords": "pip, tui, package-manager, python, lazygit, terminal",
    "author": null,
    "author_email": "playfairs <root@playfairs.cc>",
    "download_url": "https://files.pythonhosted.org/packages/8c/01/1723fc7dff52efdd8dabf5a0713416ab55500f41f456f5f22714b2f3fb87/lazypip-0.1.1.tar.gz",
    "platform": null,
    "description": "# LazyPip \ud83d\udc0d\u26a1\n\nA **lazygit-style TUI** for Python package management using pip. Navigate, install, upgrade, and manage your Python packages with an intuitive terminal interface.\n\n[![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)](https://python.org)\n[![License: GPL-3.0](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.en.html)\n[![Code Style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n## \ud83d\ude80 Features\n\n- **Intuitive TUI** - Navigate packages with vim-like keybindings\n- **Real-time Package Status** - See installed, outdated, and available packages\n- **Quick Actions** - Install, upgrade, uninstall with single keystrokes\n- **Package Details** - View comprehensive package information\n- **Bulk Operations** - Upgrade all outdated packages at once\n- **Requirements Management** - Install from requirements.txt\n- **Search & Filter** - Find packages quickly\n- **Keyboard-First** - Designed for efficiency and speed\n\n## Example\n\n```\n\u250c\u2500 LazyPip - Python Package Manager \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Installed (142)        \u2502 Package Details                       \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Status \u2502 Package       \u2502 requests \u2713                            \u2502\n\u2502   \u2713    \u2502 requests      \u2502                                       \u2502\n\u2502   \u2191    \u2502 numpy         \u2502 Version: 2.31.0                       \u2502\n\u2502   \u2713    \u2502 flask         \u2502 Latest: 2.31.0                        \u2502\n\u2502   \u2191    \u2502 django        \u2502                                       \u2502\n\u2502   \u2713    \u2502 pytest        \u2502 Summary: Python HTTP for Humans.      \u2502\n\u2502        \u2502               \u2502                                       \u2502\n\u2502        \u2502               \u2502 Location: /usr/local/lib/python3.11   \u2502\n\u2502        \u2502               \u2502                                       \u2502\n\u2502        \u2502               \u2502 Requires:                             \u2502\n\u2502        \u2502               \u2502   \u2022 urllib3>=1.21.1,<3                \u2502\n\u2502        \u2502               \u2502   \u2022 idna>=2.5,<4                      \u2502\n\u2502        \u2502               \u2502   \u2022 certifi>=2017.4.17                \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 [16:30:15] Ready       \u2502 [i]nstall [u]pgrade [d]elete [s]how   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## Installation\n\n### Prerequisites\n\n- Python 3.8 or higher\n- pip (Python package installer)\n\n### Install from PyPI (Recommended)\n\n```bash\npip install lazypip\n```\n\n### Install from Source\n\n```bash\ngit clone https://github.com/playfairs/lazypip.git\ncd lazypip\npip install -e .\n```\n\n### Development Installation\n\n```bash\ngit clone https://github.com/playfairs/lazypip.git\ncd lazypip\npip install -e \".[dev]\"\n```\n\n## Usage\n\nStart LazyPip from your terminal:\n\n```bash\nlazypip\n```\n\n### Keyboard Shortcuts\n\n#### Navigation\n- `\u2191\u2193` or `jk` - Navigate package list\n- `Tab` - Switch between panels\n- `Enter` or `Space` - Select package\n\n#### Package Management\n- `i` - Install new package\n- `u` - Upgrade selected package\n- `d` - Uninstall selected package\n- `s` - Show package details\n- `Ctrl+A` - Upgrade all outdated packages\n\n#### Application\n- `r` - Refresh package lists\n- `/` - Search packages\n- `f` - Show freeze output (requirements)\n- `Ctrl+R` - Install from requirements.txt\n- `q` or `Ctrl+C` - Quit\n\n### Tabs\n\nLazyPip organizes packages into three main tabs:\n\n1. **Installed** - All currently installed packages\n2. **Outdated** - Packages with available updates\n3. **Search** - Search for new packages to install\n\n### Package Status Indicators\n\n- `\u2713` - Package is installed and up-to-date\n- `\u2191` - Package is installed but outdated\n- `\u2717` - Package is not installed\n- `?` - Package status unknown\n\n## Themes\n\nLazyPip supports multiple themes:\n\n- **Dark Theme** (default) - Easy on the eyes for long sessions\n- **Light Theme** - For bright environments\n- **High Contrast** - Accessibility-focused theme\n\n## Project Structure\n\n```\nlazypip/\n\u251c\u2500\u2500 src/\n\u2502   \u2514\u2500\u2500 lazypip/\n\u2502       \u251c\u2500\u2500 __init__.py\n\u2502       \u251c\u2500\u2500 __main__.py          # Application entry point\n\u2502       \u251c\u2500\u2500 app.py               # Main Textual app\n\u2502       \u251c\u2500\u2500 theme.py             # CSS styling\n\u2502       \u251c\u2500\u2500 core/\n\u2502       \u2502   \u251c\u2500\u2500 pip_api.py       # Pip command wrapper\n\u2502       \u2502   \u251c\u2500\u2500 installer.py     # Package installation logic\n\u2502       \u2502   \u2514\u2500\u2500 parser.py        # Output parsing utilities\n\u2502       \u2514\u2500\u2500 tui/\n\u2502           \u251c\u2500\u2500 screens/\n\u2502           \u2502   \u251c\u2500\u2500 main.py      # Main application screen\n\u2502           \u2502   \u251c\u2500\u2500 install_dialog.py\n\u2502           \u2502   \u2514\u2500\u2500 confirmation_dialog.py\n\u2502           \u2514\u2500\u2500 widgets/\n\u2502               \u251c\u2500\u2500 package_list.py    # Package list widget\n\u2502               \u251c\u2500\u2500 package_details.py # Package details panel\n\u2502               \u2514\u2500\u2500 status_bar.py      # Status bar widget\n\u251c\u2500\u2500 tests/                       # Test suite\n\u251c\u2500\u2500 requirements.txt\n\u251c\u2500\u2500 pyproject.toml\n\u2514\u2500\u2500 README.md\n```\n\n## Testing\n\nRun the test suite:\n\n```bash\n# Install test dependencies\npip install -e \".[test]\"\n\n# Run tests\npytest\n\n# Run with coverage\npytest --cov=lazypip\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n### Development Setup\n\n1. Fork the repository\n2. Clone your fork: `git clone https://github.com/yourusername/lazypip.git`\n3. Create a virtual environment: `python -m venv venv`\n4. Activate it: `source venv/bin/activate` (Linux/Mac) or `venv\\Scripts\\activate` (Windows)\n5. Install in development mode: `pip install -e \".[dev]\"`\n6. Run tests: `pytest`\n\n### Code Style\n\nThis project uses:\n- [Black](https://github.com/psf/black) for code formatting\n- [Flake8](https://flake8.pycqa.org/) for linting\n- [MyPy](https://mypy.readthedocs.io/) for type checking\n\nFormat code before committing:\n```bash\nblack src/ tests/\nflake8 src/ tests/\nmypy src/\n```\n\n## Bug Reports & Feature Requests\n\nPlease use the [GitHub Issues](https://github.com/playfairs/lazypip/issues) page to report bugs or request features.\n\n## Acknowledgments\n\n- Inspired by [lazygit](https://github.com/jesseduffield/lazygit) - The best git TUI\n- Built with [Textual](https://github.com/Textualize/textual) - Amazing Python TUI framework\n- Styled with [Rich](https://github.com/Textualize/rich) - Beautiful terminal formatting\n\n## Roadmap\n\n- [ ] Package dependency visualization\n- [ ] Virtual environment management\n- [ ] Package vulnerability scanning\n- [ ] Custom package sources support\n- [ ] Export/import package lists\n- [ ] Package usage statistics\n- [ ] Plugin system\n- [ ] Configuration file support\n\n## Similar Projects\n\n- [lazygit](https://github.com/jesseduffield/lazygit) - Git TUI (Inspiration to the TUI)\n- [lazyvim](https://www.lazyvim.org/) - Lazy Vim (Inspiration to the name)\n- [pip-tools](https://github.com/jazzband/pip-tools) - pip dependency management\n- [pipx](https://github.com/pypa/pipx) - Install Python applications in isolated environments\n- [pypi](https://pypi.org/) - Python Package Index - pip itself\n\n---\n\n**Made with \u2764\ufe0f for the Python community**\n\nIf you find LazyPip useful, please consider giving it a \u2b50 on GitHub!# -lazypip\n",
    "bugtrack_url": null,
    "license": "GPL-3.0",
    "summary": "A lazygit-style TUI for Python package management using pip",
    "version": "0.1.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/playfairs/lazypip/issues",
        "Documentation": "https://github.com/playfairs/lazypip#readme",
        "Homepage": "https://github.com/playfairs/lazypip",
        "Repository": "https://github.com/playfairs/lazypip"
    },
    "split_keywords": [
        "pip",
        " tui",
        " package-manager",
        " python",
        " lazygit",
        " terminal"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a8bf851fed972acf37656a8c2edc0af2188e1819fb6dc50bf2b49bd4d8e41a5d",
                "md5": "9d1b7f6931a807729cc5ad1ce75804f9",
                "sha256": "df06de2d60bc612e9b8bd3dfb519e87f36b42cadb942785f5f5edad9d43bc2e1"
            },
            "downloads": -1,
            "filename": "lazypip-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9d1b7f6931a807729cc5ad1ce75804f9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 35864,
            "upload_time": "2025-08-03T18:49:52",
            "upload_time_iso_8601": "2025-08-03T18:49:52.825770Z",
            "url": "https://files.pythonhosted.org/packages/a8/bf/851fed972acf37656a8c2edc0af2188e1819fb6dc50bf2b49bd4d8e41a5d/lazypip-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8c011723fc7dff52efdd8dabf5a0713416ab55500f41f456f5f22714b2f3fb87",
                "md5": "65ac542ae84678dbee2979e53b1fce39",
                "sha256": "4bc566ce41b13244e35aa2fdbfa4f31f14ef9a04345b8da01679982970871b1d"
            },
            "downloads": -1,
            "filename": "lazypip-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "65ac542ae84678dbee2979e53b1fce39",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 34178,
            "upload_time": "2025-08-03T18:49:53",
            "upload_time_iso_8601": "2025-08-03T18:49:53.870586Z",
            "url": "https://files.pythonhosted.org/packages/8c/01/1723fc7dff52efdd8dabf5a0713416ab55500f41f456f5f22714b2f3fb87/lazypip-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-03 18:49:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "playfairs",
    "github_project": "lazypip",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "textual",
            "specs": [
                [
                    ">=",
                    "0.45.0"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.31.0"
                ]
            ]
        },
        {
            "name": "rich",
            "specs": [
                [
                    ">=",
                    "13.0.0"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    ">=",
                    "8.1.0"
                ]
            ]
        }
    ],
    "lcname": "lazypip"
}
        
Elapsed time: 2.09271s