Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mitsuhiko/pipsi

pip script installer
https://github.com/mitsuhiko/pipsi

Last synced: 4 days ago
JSON representation

pip script installer

Awesome Lists containing this project

README

        

# pipsi

**⚠️ pipsi is no longer maintained. See [pipx](https://github.com/pipxproject/pipx) for an actively maintained alternative. https://github.com/pipxproject/pipx**

---

pipsi = **pip** **s**cript **i**nstaller

## What does it do?
**pipsi** makes installing python packages with global entry points painless. These are Python packages that expose an entry point through the command line such as [Pygments](https://pypi.org/project/Pygments/).

If you are installing Python packages globally for cli access, you almost certainly want to use pipsi instead of running `sudo pip ...`. so that you get
* Isolated dependencies to guarantee no version conflicts
* The ability to install packages globally without using sudo
* The ability to uninstall a package and its dependencies without affecting other globally installed Python programs

pipsi is not meant for installing libraries that will be imported by other Python modules.

## How do I get it?

```bash
curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python
```

to see installation options, including not automatically modifying the PATH environment variable

```bash
curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python - --help
```

## How does it work?

pipsi is a wrapper around virtualenv and pip which installs scripts provided by python packages into isolated virtualenvs so they do not pollute your system's Python packages.

pipsi installs each package into `~/.local/venvs/PKGNAME` and then symlinks all new scripts into `~/.local/bin` (these can be changed by `PIPSI_HOME` and `PIPSI_BIN_DIR` environment variables respectively).

Here is a tree view into the directory structure created by pipsi after installing pipsi and running `pipsi install Pygments`.

```
/Users/user/.local
├── bin
│   ├── pipsi -> /Users/user/.local/venvs/pipsi/bin/pipsi
│   └── pygmentize -> /Users/user/.local/venvs/pygments/bin/pygmentize
├── share
│   └── virtualenvs
└── venvs
├── pipsi
└── pygments
```

Compared to `pip install --user` each `PKGNAME` is installed into its own virtualenv, so you don't have to worry about different packages having conflicting dependencies. As long as `~/.local/bin` is on your PATH, you can run any of these scripts directly.

### Installing scripts from a package:

```bash
$ pipsi install Pygments
```

### Installing scripts from a package using a particular version of python:

```bash
$ pipsi install --python /usr/bin/python3.5 hovercraft
```

### Uninstalling packages and their scripts:

```bash
$ pipsi uninstall Pygments
```

### Upgrading a package:

```bash
$ pipsi upgrade Pygments
```

### Showing what's installed:

```bash
$ pipsi list
```

### How do I get rid of pipsi?

```bash
$ pipsi uninstall pipsi
```

### How do I upgrade pipsi?

With 0.5 and later just do this:

```bash
$ pipsi upgrade pipsi
```

On older versions just uninstall and reinstall.