See what's in your Python environment. Understand it before you clean it.
A local web interface for inspecting packages, exploring dependencies, and managing installs with pip.
PipManager gives your installed Python packages a searchable, sortable interface. Find large packages, follow dependency relationships, mark tools you want to keep, and review a removal plan before running it—all from your browser.
Built with the Python standard library and plain HTML, CSS, and JavaScript. No frontend build step, application dependency install, external fonts, or CDNs.
git clone https://github.com/eco-null/PipManager.git
cd PipManager
python server.pyUse python3 instead of python if that is how you invoke Python on your system. PipManager opens your default browser at http://localhost:49150. Stop it with Ctrl+C in the terminal.
On Windows, you can also run run.bat or double-click it. The launcher uses the python command on your PATH.
PipManager manages the interpreter that starts server.py. Package operations use that interpreter's python -m pip.
Activate your existing virtual environment before running PipManager, or invoke its interpreter directly from the cloned repository:
# Windows PowerShell — replace this path with your environment
& 'C:\path\to\your-project\.venv\Scripts\python.exe' server.py# macOS / Linux — replace this path with your environment
/path/to/your-project/.venv/bin/python server.pyCheck the Python version and site-packages path in the header before changing packages. A fresh virtual environment shows its own packages, not those in your other projects.
python server.py --no-openThe server still runs locally; open http://localhost:49150 yourself.
| Capability | What you can do |
|---|---|
| Package inventory | See installed versions, recorded file sizes, summaries, and dependency counts. |
| Search and sort | Search by name, author, or summary; sort by size, name, dependent count, or recorded installation time. |
| Focused views | Browse all packages, orphan candidates, large packages, and recognized core tools. |
| Dependency inspector | Explore Required By, Requires Dependencies, package metadata, and project links. |
| Keep list | Exclude explicitly kept tools from the initial orphan recommendations. |
| Install and upgrade | Install a named package or supported version specifier; upgrade individual packages from the details panel. |
| Removal preview | Review selected packages and their predicted dependency cascade before confirming. |
| Batch removal | Select multiple packages and review them together. |
| Requirements export | Export selected packages, or the filtered view when nothing is selected, as pinned requirements. |
Open a package row to inspect its metadata, see which installed packages depend on it, and navigate to its dependencies.
The confirmation dialog lists the selected package and predicted cascade. Turn off Cascade Clean Unused Dependencies to remove only your selection, or cancel before anything changes.
Real captures of the unmodified app on Windows with Python 3.13 in a separate demo virtual environment. The example packages are not PipManager dependencies.
PipManager reads installed distribution metadata with importlib.metadata and builds a dependency map. Packages with no recorded dependents appear as orphan candidates, excluding recognized core packages and explicitly kept packages from the initial list. Before removal, it simulates which dependencies would lose their recorded dependents.
An orphan is a review candidate, not proof that a package is unused. A CLI tool or a library imported directly by your project can have no package dependents. The scanner does not inspect source-code imports or fully evaluate environment markers and optional extras.
The keep list affects the initial recommendations; the cascade simulation does not currently exclude kept packages. Review the complete confirmation list or disable cascade when removing only your selected packages.
- Python 3 with
pipavailable for package operations. - A modern web browser.
- Internet access when pip needs to download packages. Inspecting installed packages uses local metadata.
No requirements file, npm installation, or build command is needed to run the app. The screenshot workflow was verified on Windows with Python 3.13; other platform and version combinations were not tested for this documentation update.
The server binds to localhost:49150. Package operations run through the selected Python interpreter, with argument validation and subprocess timeouts. The backend rejects supplied Origin headers outside its localhost allowlist. There is no login system; keep the service local rather than exposing it publicly.
Size estimates and kept-package names are stored in .pip_manager_cache.json in the directory from which you launch the app. Use a consistent working directory to retain these preferences.
| Problem | What to check |
|---|---|
| Wrong packages appear | Check the interpreter version and installation directory in the header; restart with the intended environment's Python. |
| Browser does not open | Visit http://localhost:49150 manually and confirm the terminal reports that the server is running. |
| Port 49150 is occupied | Stop the previous instance. There is currently no --port option. |
| pip operation fails | Read the command output in the app. Operations inherit the interpreter's permissions and pip configuration. |
PipManager/
├── server.py # HTTP server, package inspection, and pip operations
├── run.bat # Windows launcher
├── frontend/
│ ├── index.html # App interface
│ ├── index.css # Monochrome theme and layout
│ └── index.js # Filtering, package details, previews, and actions
└── docs/screenshots/ # Captures from a real demo environment
Open an issue with your Python version, operating system, reproduction steps, and expected behavior. Pull requests are welcome; include a screenshot when changing the interface.


