vpip
====
.. image:: https://github.com/eight04/vpip/actions/workflows/build.yml/badge.svg
:target: https://github.com/eight04/vpip/actions/workflows/build.yml
:alt: Build status
.. image:: https://readthedocs.org/projects/vpip/badge/?version=latest
:target: https://vpip.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://img.shields.io/pypi/v/vpip.svg
:alt: PyPI
:target: https://pypi.org/project/vpip
A CLI which aims to provide an ``npm``-like experience when installing Python packages.
Features
--------
* 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) and ``setup.cfg``/``pyproject.toml`` (production).
* When removing a package, also remove its sub-dependencies.
* Easily run commands in the local virtual environment.
* Generate a lock file (``requirements-lock.txt``).
Installation
------------
``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).
Usage example
-------------
Install:
* ``vpip install`` - Create/activate a local venv and install all dependencies.
* ``vpip install configupdater`` - Create/activate a local venv, install ``configupdater``, and add to production dependency.
* ``vpip install -g youtube-dl`` - Create a venv under ``~/.vpip``, install ``youtube-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, uninstall ``pylint``, and remove ``pylint`` from 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.
Compatibility
--------------
``vpip`` is a cross-platform CLI. Please report any compatibility issues.
Documentation
-------------
https://vpip.readthedocs.io/en/latest/index.html
Similar projects
----------------
* `pipm <https://github.com/jnoortheen/pipm>`_ - which doesn't use virtualenv.
* `pipx <https://github.com/pypa/pipx>`_ - like ``vpip install -g``.
* `pdm <https://github.com/pdm-project/pdm>`_ - a more feature-rich depdenency manager.
Changelog
---------
* 0.9.2 (Feb 4, 2024)
- Fix: ignore unsupported version number in ``list --outdated``.
* 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: ``link`` command now accepts an optional package name.
- Fix: ``install -g`` error 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 install`` when installing/updating packages.
- Fix: now ``vpip update`` won't install packages whose env marker evaluates to false.
* 0.7.0 (Feb 9, 2022)
- Change: now ``wheel`` is also pre-installed in venv like ``pip``.
* 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.install`` now accepts multiple packages.
- Change: ``vpip update`` now updates sub-dependencies.
* 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.cfg`` or ``requirements.txt``.
* 0.4.3 (Jan 31, 2020)
- Fix: don't break sub-dependencies when uninstall.
* 0.4.2 (Nov 9, 2019)
- Fix: generate ``setup.py`` automatically if needed.
- Fix: use utf8 encoding when parsing pip output.
* 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_venv`` command.
- Breaking: ``pip_api.show`` and ``pip_api.uninstall`` now 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_compatible`` treat ``0.1.0`` and ``0.2.0`` as compatible.
- Fix: don't include pre-release when checking updates.
- Update dependencies.
* 0.2.2 (Feb 2, 2019)
- Add: ``link`` command.
* 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
Raw data
{
"_id": null,
"home_page": "",
"name": "vpip",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "pip,pipm,pipx,venv,vex,virtualenv,pipenv,pdm,poetry",
"author": "",
"author_email": "eight <eight04@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/2b/1a/cb6453f69f527fe698453cd04b73971e677e1170ebd9f40d8aae5cb0bb34/vpip-0.9.2.tar.gz",
"platform": null,
"description": "vpip\r\n====\r\n\r\n.. image:: https://github.com/eight04/vpip/actions/workflows/build.yml/badge.svg\r\n :target: https://github.com/eight04/vpip/actions/workflows/build.yml\r\n :alt: Build status\r\n\r\n.. image:: https://readthedocs.org/projects/vpip/badge/?version=latest\r\n :target: https://vpip.readthedocs.io/en/latest/?badge=latest\r\n :alt: Documentation Status\r\n \r\n.. image:: https://img.shields.io/pypi/v/vpip.svg\r\n :alt: PyPI\r\n :target: https://pypi.org/project/vpip\r\n\r\nA CLI which aims to provide an ``npm``-like experience when installing Python packages.\r\n\r\nFeatures\r\n--------\r\n\r\n* Install packages to isolated global virtual environments.\r\n\r\n - Executables are linked to the Python Scripts folder so you can still use the CLI without activating the venv.\r\n - This allows you to install different CLI tools without worrying about dependency conflicts.\r\n \r\n* Install packages to a local virtual environment.\r\n\r\n - Dependencies are stored in ``requirements.txt`` (development) and ``setup.cfg``/``pyproject.toml`` (production).\r\n \r\n* When removing a package, also remove its sub-dependencies.\r\n* Easily run commands in the local virtual environment.\r\n* Generate a lock file (``requirements-lock.txt``).\r\n\r\nInstallation\r\n------------\r\n\r\n``vpip`` is hosted on pypi::\r\n\r\n pip install vpip\r\n \r\nAfter installing vpip as a CLI, you can use it to install other packages (globally or locally).\r\n \r\nUsage example\r\n-------------\r\n\r\nInstall:\r\n\r\n* ``vpip install`` - Create/activate a local venv and install all dependencies.\r\n* ``vpip install configupdater`` - Create/activate a local venv, install ``configupdater``, and add to production dependency.\r\n* ``vpip install -g youtube-dl`` - Create a venv under ``~/.vpip``, install ``youtube-dl``, and link the executable (``youtube-dl.exe``) to the script folder.\r\n* ``vpip install -g https://github.com/eight04/ComicCrawler/archive/refs/heads/master.zip`` - You can also install global CLI from a URL.\r\n\r\nUninstall:\r\n\r\n* ``vpip uninstall pylint`` - Activate the local venv, uninstall ``pylint``, and remove ``pylint`` from both dev/prod dependency.\r\n\r\nUpdate:\r\n\r\n* ``vpip update pylint`` - Upgrade pylint to the compatible version.\r\n* ``vpip update pylint --latest`` - Upgrade pylint to the latest release.\r\n\r\nExecute command:\r\n\r\n* ``vpip run python`` - Launch python REPL in the local venv.\r\n* ``vpip run pylint my_proj`` - Run pylint installed in the local venv.\r\n\r\nList dependencies:\r\n\r\n* ``vpip list`` - List development/production dependencies.\r\n* ``vpip list --outdated`` - List development/production dependencies that are outdated.\r\n* ``vpip list -g`` - List globally installed packages.\r\n\r\nCompatibility\r\n--------------\r\n\r\n``vpip`` is a cross-platform CLI. Please report any compatibility issues.\r\n\r\nDocumentation\r\n-------------\r\n\r\nhttps://vpip.readthedocs.io/en/latest/index.html\r\n\r\nSimilar projects\r\n----------------\r\n\r\n* `pipm <https://github.com/jnoortheen/pipm>`_ - which doesn't use virtualenv.\r\n* `pipx <https://github.com/pypa/pipx>`_ - like ``vpip install -g``.\r\n* `pdm <https://github.com/pdm-project/pdm>`_ - a more feature-rich depdenency manager.\r\n\r\nChangelog\r\n---------\r\n\r\n* 0.9.2 (Feb 4, 2024)\r\n\r\n - Fix: ignore unsupported version number in ``list --outdated``.\r\n\r\n* 0.9.1 (Oct 22, 2023)\r\n\r\n - Fix: type error on Python 3.9\r\n\r\n* 0.9.0 (Oct 22, 2023)\r\n\r\n - Change: bump to python>=3.9, update dependencies.\r\n - Add: support ``pyproject.toml``.\r\n - Add: ``link`` command now accepts an optional package name.\r\n - Fix: ``install -g`` error when using a specifier.\r\n - Fix: JSON error in ``pip_api.list_``.\r\n\r\n* 0.8.0 (Apr 23, 2022)\r\n\r\n - Change: now vpip would try to avoid sub-dependencies conflicts by passing all dependencies to ``pip install`` when installing/updating packages.\r\n - Fix: now ``vpip update`` won't install packages whose env marker evaluates to false.\r\n\r\n* 0.7.0 (Feb 9, 2022)\r\n\r\n - Change: now ``wheel`` is also pre-installed in venv like ``pip``.\r\n\r\n* 0.6.0 (Jan 25, 2022)\r\n\r\n - Fix: make sure the script folder is in env variable path when ``vpip link``.\r\n - Add: support installing global CLI from a URL.\r\n - Change: ``pip_api.install`` now accepts multiple packages.\r\n - Change: ``vpip update`` now updates sub-dependencies.\r\n\r\n* 0.5.0 (Jan 5, 2022)\r\n\r\n - Change: bump to python@3.7+\r\n - Change: drop pkg_resources, improve performance.\r\n - Change: don't use pip internal when finding global scripts folder.\r\n - Fix: use utf8 encoding when reading/writing ``setup.cfg`` or ``requirements.txt``.\r\n\r\n* 0.4.3 (Jan 31, 2020)\r\n\r\n - Fix: don't break sub-dependencies when uninstall.\r\n\r\n* 0.4.2 (Nov 9, 2019)\r\n\r\n - Fix: generate ``setup.py`` automatically if needed.\r\n - Fix: use utf8 encoding when parsing pip output.\r\n\r\n* 0.4.1 (Nov 2, 2019)\r\n\r\n - Nothing is changed. Updated README and corrected some errors.\r\n\r\n* 0.4.0 (Nov 1, 2019)\r\n\r\n - Fix: rebuild egg files after doing an incompatible update.\r\n - Fix: clean unused packages after uninstall.\r\n - Add: ``update_venv`` command.\r\n - Breaking: ``pip_api.show`` and ``pip_api.uninstall`` now accept multiple packages.\r\n\r\n* 0.3.0 (Oct 31, 2019)\r\n\r\n - **Support Unix system.**\r\n - **Add: generate a lock file.**\r\n\r\n* 0.2.3 (Feb 10, 2019)\r\n\r\n - Fix: ``pypi.is_compatible`` treat ``0.1.0`` and ``0.2.0`` as compatible.\r\n - Fix: don't include pre-release when checking updates.\r\n - Update dependencies.\r\n\r\n* 0.2.2 (Feb 2, 2019)\r\n\r\n - Add: ``link`` command.\r\n\r\n* 0.2.1 (Nov 16, 2018)\r\n\r\n - Add: user defined commands.\r\n\r\n* 0.2.0 (Nov 16, 2018)\r\n\r\n - Add documentation.\r\n - Change: console scripts will be overwritten by default, matching pip's default behavior.\r\n\r\n* 0.1.0 (Nov 13, 2018)\r\n\r\n - First release\r\n \r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A CLI which aims to provide an npm-like experience when working with Python packages.",
"version": "0.9.2",
"project_urls": {
"Homepage": "https://github.com/eight04/vpip"
},
"split_keywords": [
"pip",
"pipm",
"pipx",
"venv",
"vex",
"virtualenv",
"pipenv",
"pdm",
"poetry"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3bee0b2cc935ae6dba933cea2d755c6b7bae3b61507604c506ff0ff9eb1d5d11",
"md5": "9ed3b01c8d4dff438d6322dbbfc7fb90",
"sha256": "8d55dac1fca3044c8910c13bd77da9a0c84e6c8cce41a3328f23c98a602c172c"
},
"downloads": -1,
"filename": "vpip-0.9.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9ed3b01c8d4dff438d6322dbbfc7fb90",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 24370,
"upload_time": "2024-02-05T17:40:27",
"upload_time_iso_8601": "2024-02-05T17:40:27.539091Z",
"url": "https://files.pythonhosted.org/packages/3b/ee/0b2cc935ae6dba933cea2d755c6b7bae3b61507604c506ff0ff9eb1d5d11/vpip-0.9.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2b1acb6453f69f527fe698453cd04b73971e677e1170ebd9f40d8aae5cb0bb34",
"md5": "efb591ab813a791ec0ecf01bf95b5979",
"sha256": "5c7523cc8ef7fd830366c1478361d05119b9f1bdb998af563d5b2778b114cf9e"
},
"downloads": -1,
"filename": "vpip-0.9.2.tar.gz",
"has_sig": false,
"md5_digest": "efb591ab813a791ec0ecf01bf95b5979",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22379,
"upload_time": "2024-02-05T17:40:29",
"upload_time_iso_8601": "2024-02-05T17:40:29.695221Z",
"url": "https://files.pythonhosted.org/packages/2b/1a/cb6453f69f527fe698453cd04b73971e677e1170ebd9f40d8aae5cb0bb34/vpip-0.9.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-05 17:40:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "eight04",
"github_project": "vpip",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "build",
"specs": [
[
"==",
"1.0.3"
]
]
},
{
"name": "pylint",
"specs": [
[
"==",
"3.0.2"
]
]
},
{
"name": "pytest",
"specs": [
[
"==",
"7.4.2"
]
]
},
{
"name": "pyxcute",
"specs": [
[
"==",
"0.8.1"
]
]
},
{
"name": "sphinx",
"specs": [
[
"==",
"7.2.6"
]
]
},
{
"name": "twine",
"specs": [
[
"==",
"4.0.2"
]
]
},
{
"name": "wheel",
"specs": [
[
"==",
"0.41.2"
]
]
},
{
"name": "yamldirs",
"specs": [
[
"==",
"1.1.16"
]
]
}
],
"lcname": "vpip"
}