Metadata-Version: 2.1
Name: pipis
Version: 2.0.0
Summary: Wraps pip and venv to install scripts
Home-page: https://github.com/nikaro/pipis
Author: Nicolas KAROLAK
Author-email: nicolas@karolak.fr
License: WTFPL
Download-URL: https://github.com/nikaro/pipis/releases
Description: # PIPIS
        
        | **tests** | [![Build Status](https://travis-ci.org/nikaro/pipis.svg?branch=master)](https://travis-ci.org/nikaro/pipis) |
        |-|-|
        | **package** | [![PyPI version](https://img.shields.io/pypi/v/pipis.svg)](https://pypi.org/project/pipis) [![Supported versions](https://img.shields.io/pypi/pyversions/pipis.svg)](https://pypi.org/project/pipis) [![PyPI - Status](https://img.shields.io/pypi/status/pipis.svg)](https://github.com/nikaro/pipis) |
        
        ## Somewhere between pip and pipsi
        
        > "pipis" stands for "pip isolate" \
        > and "pipi" is the french for "peepee" which is a fun name but [pipi](https://pypi.org/project/pipi/) was already taken…
        
        Actually it is a rewrite of [pipsi](https://github.com/mitsuhiko/pipsi) but with [venv](https://docs.python.org/dev/library/venv.html) instead of [virtualenv](https://virtualenv.pypa.io/en/stable/).
        
        ## What does it do?
        
        Pipis is a wrapper around venv and pip which installs scripts provided by python packages into separate venvs to shield them from your system and each other.
        
        It creates a venv in `~/.local/venvs/`, update pip, installs the package, and links the package's scripts to `~/.local/bin/`. These directory can be changed respectively through the environment variables `PIPIS_VENVS` and `PIPIS_BIN`.
        
        ## Why not pipsi?
        
        Because i do not care about Python 2, and `virtualenv` copies python's binaries while `venv` just symlink them (which i think is cleaner, but it still copies `pip` which is not clean…).
        
        ## How to install
        
        ### Automatic
        
        Coming soon…
        
        ### Manual
        
        Create the pipis venvs and bin directories:
        ```sh
        mkdir -p ~/.local/share/pipis/{venvs,bin}
        ```
        
        Create and activate the pipis virtual environment:
        ```sh
        python3 -m venv ~/.local/share/pipis/venvs/pipis
        source ~/.local/share/pipis/venvs/pipis/bin/activate
        ```
        
        Upgrade the pip package:
        ```sh
        pip install -U pip
        ```
        
        Install pipis:
        ```sh
        pip install pipis
        ```
        
        Exit the virtual environment:
        ```sh
        deactivate
        ```
        
        Link the pipis script into the "global" bin directory:
        ```sh
        ln -s ~/.local/share/pipis/venvs/pipis/bin/pipis ~/.local/share/pipis/bin/
        ```
        
        Add the pipis "global" bin directory to your PATH:
        ```sh
        export PATH="~/.local/share/pipis/bin:${PATH}"
        ```
        
        ## How to update
        
        ```
        pipis update pipis
        ```
        
        ## How to uninstall
        
        ```
        pipis uninstall pipis
        ```
        
        ## How to use
        
        ### Show help
        
        ```
        $ pipis --help
        Usage: pipis [OPTIONS] COMMAND [ARGS]...
        
        Options:
          --help  Show this message and exit.
        
        Commands:
          install
          list
          uninstall
          update
        ```
        
        You can also invoke `--help` on each commands.
        
        ### Install package(s)
        
        ```
        $ pipis install ansible
        Do you want to continue? [y/N]: y
        Installing  [####################################]  100%
        ```
        
        You can install multiple packages:
        
        ```
        $ pipis install ansible ansible-lint jmespath
        Do you want to continue? [y/N]: y
        Installing  [####################################]  100%
        ```
        
        ### Unattended install package(s)
        
        ```
        $ pipis install --yes awscli
        Installing  [####################################]  100%
        ```
        
        ### Update package(s)
        
        ```
        $ pipis update ansible
        Do you want to continue? [y/N]: y
        Updating  [####################################]  100%
        ```
        
        You can also update all installed packages at once:
        
        ```
        $ pipis update
        Do you want to continue? [y/N]: y
        Updating  [####################################]  100%
        ```
        
        ### List installed packages
        
        ```
        $ pipis list
        Installed:
          - ansible
          - ansible-lint
          - awscli
          - bashate
          - docker-compose
          - flake8
          - jmespath
          - pipis
          - poetry
          - pylint
          - python-language-server
          - twine
        ```
        
        ### Uninstall package(s)
        
        ```
        $ pipis uninstall ansible
        Do you want to continue? [y/N]: y
        Removing  [####################################]  100%
        ```
        
        ## Credits
        
        - [Armin Ronacher](https://github.com/mitsuhiko): the author of pipsi, for the inspiration
        - [Nicolas Karolak](https://github.com/nikaro): myself, the author of pipis
        
        # Changelog
        All notable changes to this project will be documented in this file.
        
        The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
        and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
        
        ## [Unreleased]
        ### Added
        - Add `search` command, to search packages on PyPI.
        
        ## [1.5.0]
        ### Added
        - Add `-I` or `--ignore-installed` option on `install` and `update` commands.
        - Add `-U` or `--upgrade` option on `install` command.
        
        ### Changed
        - Move some portion of code into separate functions to make the code easier to read.
        - Updating an uninstalled package will install it, instead of failing.
        - While creating symlinks, if the target already exists it will be replaced, instead of failing.
        
        ### Fixed
        - Fix some linting warnings.
        
        ## [1.4.0]
        ### Added
        - Install option `-s` or `--system-site-packages` to give access to system site-packages to venv.
        - Allow to specify package version (ex: `ansible==2.4.0`).
        - Add a package into a package's venv with `-d` or `--dependency` option.
        - Add `-v` or `--verbose` option on `install` and `update` commands.
        
        ## [1.3.1]
        ### Fixed
        - Refactor environment variable retrieval.
        
        ## [1.3.0]
        ### Added
        - Destination venv directory can be set through the environment variable `PIPIS_VENV`.
        - Destination bin directory can be set through the environment variable `PIPIS_BIN`.
        
        ### Changed
        - Format `list` output like pip's one.
        
        ### Fixed
        - Remove venv created in case of inexistant package install attempt.
        - Raise error when the package is a library (has no user script).
        - Raise error when the symlink destination already exists.
        - Raise error when trying to update an inexistant package.
        
        ## [1.2.0]
        ### Added
        - Add `freeze` command to output installed packages in requirements format.
        - Add command to show pipis version.
        
        ### Changed
        - Show version beside package name in `list` command.
        - Improve existing and add new help texts.
        - Add short from `-y` for `--yes` argument.
        - Factorize duplicate code.
        
        ### Fixed
        - Fix pep8 and pylint warnings.
        
        ## [1.1.0] - 2018-05-18
        ### Added
        - Add `-r/--requirement` for the `remove` command to allow passing `requirements.txt` file.
        - Add `-r/--requirement` for the `update` command to allow passing `requirements.txt` file.
        - Add `-r/--requirement` for the `install` command to allow passing `requirements.txt` file.
        
        ### Changed
        - Change output information format fo when package are already/not installed.
        
        ## [1.0.1] - 2018-05-17
        ### Fixed
        - Reload `sys.path` and clean it after to avoid issue with "distribution not found".
        
        ## [1.0.0] - 2018-05-17
        ### Added
        - Everything.
        
        [Unreleased]: https://gitlab.com/NicolasKAROLAK/pipis/compare/v1.5.0...HEAD
        [1.5.0]: https://gitlab.com/NicolasKAROLAK/pipis/compare/v1.4.0...v1.5.0
        [1.4.0]: https://gitlab.com/NicolasKAROLAK/pipis/compare/v1.3.1...v1.4.0
        [1.3.1]: https://gitlab.com/NicolasKAROLAK/pipis/compare/v1.3.0...v1.3.1
        [1.3.0]: https://gitlab.com/NicolasKAROLAK/pipis/compare/v1.2.0...v1.3.0
        [1.2.0]: https://gitlab.com/NicolasKAROLAK/pipis/compare/v1.1.0...1.2.0
        [1.1.0]: https://gitlab.com/NicolasKAROLAK/pipis/compare/v1.0.1...v1.1.0
        [1.0.1]: https://gitlab.com/NicolasKAROLAK/pipis/compare/v1.0.0...v1.0.1
        [1.0.0]: https://gitlab.com/NicolasKAROLAK/pipis/compare/0c3cc746...v1.0.0
        
Keywords: packaging,pip,venv
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: System :: Software Distribution
Description-Content-Type: text/markdown
Provides-Extra: dev
