vpip


Namevpip JSON
Version 0.10.1 PyPI version JSON
download
home_pageNone
SummaryA CLI which aims to provide an npm-like experience when working with Python packages.
upload_time2024-12-29 12:29:20
maintainerNone
docs_urlNone
authorNone
requires_pythonNone
licenseMIT
keywords pip pipm pipx venv vex virtualenv pipenv pdm poetry
VCS
bugtrack_url
requirements build pylint pytest pyxcute sphinx twine yamldirs
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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.10.1 (Dec 29, 2024)

  - Fix: use ``VIRTUAL_ENV`` env variable when building ``inspect()`` cache.
  - Fix: try to search script folder in ``base_exec_prefix``.

* 0.10.0 (Nov 16, 2024)

  - Fix: packages only bump major should use ``>=`` version range.
  - Fix: use ``pip inspect`` instead of ``pip show`` to 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.

* 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": null,
    "name": "vpip",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "pip, pipm, pipx, venv, vex, virtualenv, pipenv, pdm, poetry",
    "author": null,
    "author_email": "eight <eight04@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/92/25/b5599a4db8d15df0fa4dd47a60b28f46c1e510128edc53948789062c2d72/vpip-0.10.1.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.10.1 (Dec 29, 2024)\r\n\r\n  - Fix: use ``VIRTUAL_ENV`` env variable when building ``inspect()`` cache.\r\n  - Fix: try to search script folder in ``base_exec_prefix``.\r\n\r\n* 0.10.0 (Nov 16, 2024)\r\n\r\n  - Fix: packages only bump major should use ``>=`` version range.\r\n  - Fix: use ``pip inspect`` instead of ``pip show`` to get package information.\r\n  - Fix: support editable install for pyproject.toml.\r\n  - Fix: don't throw on versions without minor numbers.\r\n  - Fix: unable to list global packages if extra is used.\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.10.1",
    "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": "9066e1c6f6f6b33714e72466e6ad5b1d6a3914d3f8802e8136005d1155dc9cef",
                "md5": "8ca36fc01ff00b05f9411f61b834dee6",
                "sha256": "a0848003dc72fb62ee4b5db015d4527efb1a21e67f5188d52a732270f4d6a641"
            },
            "downloads": -1,
            "filename": "vpip-0.10.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8ca36fc01ff00b05f9411f61b834dee6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 25359,
            "upload_time": "2024-12-29T12:29:19",
            "upload_time_iso_8601": "2024-12-29T12:29:19.215355Z",
            "url": "https://files.pythonhosted.org/packages/90/66/e1c6f6f6b33714e72466e6ad5b1d6a3914d3f8802e8136005d1155dc9cef/vpip-0.10.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9225b5599a4db8d15df0fa4dd47a60b28f46c1e510128edc53948789062c2d72",
                "md5": "dc1d49c7b43288b6605c858a9ff572b7",
                "sha256": "f32e1103b5a0a65de4b57885d33ec8fa9f4552c95dd66e5c83fd574f37c5a35b"
            },
            "downloads": -1,
            "filename": "vpip-0.10.1.tar.gz",
            "has_sig": false,
            "md5_digest": "dc1d49c7b43288b6605c858a9ff572b7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 23319,
            "upload_time": "2024-12-29T12:29:20",
            "upload_time_iso_8601": "2024-12-29T12:29:20.456690Z",
            "url": "https://files.pythonhosted.org/packages/92/25/b5599a4db8d15df0fa4dd47a60b28f46c1e510128edc53948789062c2d72/vpip-0.10.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-29 12:29:20",
    "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.2.2.post1"
                ]
            ]
        },
        {
            "name": "pylint",
            "specs": [
                [
                    "==",
                    "3.3.1"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "==",
                    "8.3.3"
                ]
            ]
        },
        {
            "name": "pyxcute",
            "specs": [
                [
                    "==",
                    "0.8.1"
                ]
            ]
        },
        {
            "name": "sphinx",
            "specs": [
                [
                    "==",
                    "8.1.3"
                ]
            ]
        },
        {
            "name": "twine",
            "specs": [
                [
                    "==",
                    "5.1.1"
                ]
            ]
        },
        {
            "name": "yamldirs",
            "specs": [
                [
                    "==",
                    "1.1.16"
                ]
            ]
        }
    ],
    "lcname": "vpip"
}
        
Elapsed time: 0.37180s