A CLI which aims to provide an npm-like experience when installing Python packages.
- Install packages to isolated global virtual environments.
- Executables are linked to the Python Scripts folder so you can still use the CLI without activating the venv.
- This allows you to install different CLI tools without worrying about dependency conflicts.
- Install packages to a local virtual environment.
- Dependencies are stored in
requirements.txt(development) andsetup.cfg/pyproject.toml(production).
- Dependencies are stored in
- When removing a package, also remove its sub-dependencies.
- Easily run commands in the local virtual environment.
- Generate a lock file (
requirements-lock.txt).
vpip is hosted on pypi:
pip install vpip
After installing vpip as a CLI, you can use it to install other packages (globally or locally).
Install:
vpip install- Create/activate a local venv and install all dependencies.vpip install configupdater- Create/activate a local venv, installconfigupdater, and add to production dependency.vpip install -g youtube-dl- Create a venv under~/.vpip, installyoutube-dl, and link the executable (youtube-dl.exe) to the script folder.vpip install -g https://github.com/eight04/ComicCrawler/archive/refs/heads/master.zip- You can also install global CLI from a URL.
Uninstall:
vpip uninstall pylint- Activate the local venv, uninstallpylint, and removepylintfrom both dev/prod dependency.
Update:
vpip update pylint- Upgrade pylint to the compatible version.vpip update pylint --latest- Upgrade pylint to the latest release.
Execute command:
vpip run python- Launch python REPL in the local venv.vpip run pylint my_proj- Run pylint installed in the local venv.
List dependencies:
vpip list- List development/production dependencies.vpip list --outdated- List development/production dependencies that are outdated.vpip list -g- List globally installed packages.
vpip is a cross-platform CLI. Please report any compatibility issues.
https://vpip.readthedocs.io/en/latest/index.html
- pipm - which doesn't use virtualenv.
- pipx - like
vpip install -g. - pdm - a more feature-rich depdenency manager.
- 0.11.1 (Aug 20, 2025)
- Fix: exclude venv scripts folder when checking for global scripts folder.
- Add: improve error message in link command.
- 0.11.0 (Aug 19, 2025)
- Change: use symlink on Windows. Now vpip will display a UAC prompt when installing global packages if it has to symlink python scripts and the current user has no symlink permission.
- Fix: ignore yanked versions when checking updates.
- 0.10.1 (Dec 29, 2024)
- Fix: use
VIRTUAL_ENVenv variable when buildinginspect()cache. - Fix: try to search script folder in
base_exec_prefix.
- Fix: use
- 0.10.0 (Nov 16, 2024)
- Fix: packages only bump major should use
>=version range. - Fix: use
pip inspectinstead ofpip showto get package information. - Fix: support editable install for pyproject.toml.
- Fix: don't throw on versions without minor numbers.
- Fix: unable to list global packages if extra is used.
- Fix: packages only bump major should use
- 0.9.2 (Feb 4, 2024)
- Fix: ignore unsupported version number in
list --outdated.
- Fix: ignore unsupported version number in
- 0.9.1 (Oct 22, 2023)
- Fix: type error on Python 3.9
- 0.9.0 (Oct 22, 2023)
- Change: bump to python>=3.9, update dependencies.
- Add: support
pyproject.toml. - Add:
linkcommand now accepts an optional package name. - Fix:
install -gerror when using a specifier. - Fix: JSON error in
pip_api.list_.
- 0.8.0 (Apr 23, 2022)
- Change: now vpip would try to avoid sub-dependencies conflicts by passing all dependencies to
pip installwhen installing/updating packages. - Fix: now
vpip updatewon't install packages whose env marker evaluates to false.
- Change: now vpip would try to avoid sub-dependencies conflicts by passing all dependencies to
- 0.7.0 (Feb 9, 2022)
- Change: now
wheelis also pre-installed in venv likepip.
- Change: now
- 0.6.0 (Jan 25, 2022)
- Fix: make sure the script folder is in env variable path when
vpip link. - Add: support installing global CLI from a URL.
- Change:
pip_api.installnow accepts multiple packages. - Change:
vpip updatenow updates sub-dependencies.
- Fix: make sure the script folder is in env variable path when
- 0.5.0 (Jan 5, 2022)
- Change: bump to python@3.7+
- Change: drop pkg_resources, improve performance.
- Change: don't use pip internal when finding global scripts folder.
- Fix: use utf8 encoding when reading/writing
setup.cfgorrequirements.txt.
- 0.4.3 (Jan 31, 2020)
- Fix: don't break sub-dependencies when uninstall.
- 0.4.2 (Nov 9, 2019)
- Fix: generate
setup.pyautomatically if needed. - Fix: use utf8 encoding when parsing pip output.
- Fix: generate
- 0.4.1 (Nov 2, 2019)
- Nothing is changed. Updated README and corrected some errors.
- 0.4.0 (Nov 1, 2019)
- Fix: rebuild egg files after doing an incompatible update.
- Fix: clean unused packages after uninstall.
- Add:
update_venvcommand. - Breaking:
pip_api.showandpip_api.uninstallnow accept multiple packages.
- 0.3.0 (Oct 31, 2019)
- Support Unix system.
- Add: generate a lock file.
- 0.2.3 (Feb 10, 2019)
- Fix:
pypi.is_compatibletreat0.1.0and0.2.0as compatible. - Fix: don't include pre-release when checking updates.
- Update dependencies.
- Fix:
- 0.2.2 (Feb 2, 2019)
- Add:
linkcommand.
- Add:
- 0.2.1 (Nov 16, 2018)
- Add: user defined commands.
- 0.2.0 (Nov 16, 2018)
- Add documentation.
- Change: console scripts will be overwritten by default, matching pip's default behavior.
- 0.1.0 (Nov 13, 2018)
- First release