PIPIS
| tests | |
|---|---|
| package |
Somewhere between pip and pipsi
"pipis" stands for "pip isolate"
and "pipi" is the french for "peepee" which is a fun name but pipi was already taken…
Actually it is a rewrite of pipsi but with venv instead of virtualenv.
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/share/pipis/venvs/, update pip, installs the package, and links the package's scripts to ~/.local/share/pipis/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:
mkdir -p ~/.local/share/pipis/{venvs,bin}
Create and activate the pipis virtual environment:
python3 -m venv ~/.local/share/pipis/venvs/pipis
source ~/.local/share/pipis/venvs/pipis/bin/activate
Upgrade the pip package:
pip install -U pip
Install pipis:
pip install pipis
Exit the virtual environment:
deactivate
Link the pipis script into the "global" bin directory:
ln -s ~/.local/share/pipis/venvs/pipis/bin/pipis ~/.local/share/pipis/bin/
Add the pipis "global" bin directory to your PATH:
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 -h
usage: pipis [-h] [-v] {version,freeze,search,install,update,uninstall} ...
Pipis installs Python packages into their own dedicated virtualenv to shield
them from your system and from each other. Virtualenvs are created in
`PIPIS_VENVS` (default: `~/.local/share/pipis/<package>`) and links the
scripts to `PIPIS_BIN` (default: `~/.local/share/pipis/bin/`).
optional arguments:
-h, --help show this help message and exit
-v, --verbose enable verbose ouput
available commands:
{version,freeze,search,install,update,uninstall}
version show pipis version
freeze output installed packages in requirements format
search search for PyPI packages whose name or summary
contains <query>
install install packages
update update packages
uninstall uninstall packages
You can also invoke --help on each commands.
Install package(s)
$ pipis install ansible
Package 'ansible' will be installed.
Do you want to continue [y/N]? y
Successfully installed ansible
Unattended install package(s)
$ pipis install -y awscli
Successfully installed awscli
Update package(s)
$ pipis update ansible
Package 'ansible' will be updated.
Do you want to continue [y/N]? y
Successfully updated ansible
List installed packages
$ pipis freeze
ansible==2.8.1
awscli==1.16.181
gcal2redmine==0.2.0
gitignore-cli==1.0.3
pipenv==2018.11.26
pipis==2.0.0
poetry==0.12.16
speedtest-cli==2.1.1
tldr==0.4.4
youtube-dl==2019.6.8
Uninstall package(s)
$ pipis uninstall ansible
Package 'ansible' will be uninstalled.
Do you want to continue [y/N]? y
Successfully uninstalled ansible
Credits
- Armin Ronacher: the author of pipsi, for the inspiration
- Nicolas Karolak: 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 and this project adheres to Semantic Versioning.
Unreleased
2.0.0
Added
- Add
searchcommand, to search packages on PyPI.
Changed
- Complete rewrite with argparse (removing depency to Click)
Removed
- The
listcommand, it had no real purpose - The possibility to install multiple package at once, will be re-added later
- The possibility to upgrade all package with
pipis update, will be re-added later
1.5.0
Added
- Add
-Ior--ignore-installedoption oninstallandupdatecommands. - Add
-Uor--upgradeoption oninstallcommand.
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
-sor--system-site-packagesto 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
-dor--dependencyoption. - Add
-vor--verboseoption oninstallandupdatecommands.
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
listoutput 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
freezecommand to output installed packages in requirements format. - Add command to show pipis version.
Changed
- Show version beside package name in
listcommand. - Improve existing and add new help texts.
- Add short from
-yfor--yesargument. - Factorize duplicate code.
Fixed
- Fix pep8 and pylint warnings.
1.1.0 - 2018-05-18
Added
- Add
-r/--requirementfor theremovecommand to allow passingrequirements.txtfile. - Add
-r/--requirementfor theupdatecommand to allow passingrequirements.txtfile. - Add
-r/--requirementfor theinstallcommand to allow passingrequirements.txtfile.
Changed
- Change output information format fo when package are already/not installed.
1.0.1 - 2018-05-17
Fixed
- Reload
sys.pathand clean it after to avoid issue with "distribution not found".
1.0.0 - 2018-05-17
Added
- Everything.
Metadata
Release files for pipis 2.0.0.post2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pipis-2.0.0.post2.tar.gz | 12.2 kB | Without provenance | Details for pipis-2.0.0.post2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pipis-2.0.0.post2-py3-none-any.whl | Python 3 | none | any | Details for pipis-2.0.0.post2-py3-none-any.whl |
Total release size: 22.3 kB
Release files / pipis-2.0.0.post2.tar.gz
| Download URL | pipis-2.0.0.post2.tar.gz |
|---|---|
| Size | 12.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f775318c3febf79b1b067aad3cc301c55cb54e4b626209203322d06315aba16d
|
|
BLAKE2b-256 checksum How to use checksums |
9f99d38e134e226969e7b0bfb32636ff7ac0360c57edaa24042fb278673c7540
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
|
Release files / pipis-2.0.0.post2-py3-none-any.whl
| Download URL | pipis-2.0.0.post2-py3-none-any.whl |
|---|---|
| Size | 10.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
043e57cfedf02e6062fba6ec50d54c289e513e3e304f56670db61b99def6b7e2
|
|
BLAKE2b-256 checksum How to use checksums |
80d077612e300690145a1def76e0eabf8122f1a33bd4656991514d7e881f1c70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
|
Security for pipis 2.0.0.post2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.