Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dvershinin/pip-safe
Safe pip installer for command-line Python apps
https://github.com/dvershinin/pip-safe
centos cli pip pypi python rhel virtualenv virtualenv-manager
Last synced: 13 days ago
JSON representation
Safe pip installer for command-line Python apps
- Host: GitHub
- URL: https://github.com/dvershinin/pip-safe
- Owner: dvershinin
- License: bsd-2-clause
- Created: 2020-01-02T23:23:04.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-06-21T17:57:52.000Z (5 months ago)
- Last Synced: 2024-10-23T15:41:36.230Z (22 days ago)
- Topics: centos, cli, pip, pypi, python, rhel, virtualenv, virtualenv-manager
- Language: Python
- Homepage: https://www.getpagespeed.com/server-setup/do-not-run-pip-as-root
- Size: 44.9 KB
- Stars: 10
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
## pip-safe
[![Buy Me a Coffee](https://img.shields.io/badge/dynamic/json?color=blue&label=Buy%20me%20a%20Coffee&prefix=%23&query=next_time_total&url=https%3A%2F%2Fwww.getpagespeed.com%2Fbuymeacoffee.json&logo=buymeacoffee)](https://www.buymeacoffee.com/dvershinin)
`pip-safe` is the *safe* and easy pip package manager for command-line apps from PyPi.
### Synopsys
pip-safe install lastversion
lastversion linux
### WhyUsing `pip install ...` outside virtualenv [can simply break your system](https://www.getpagespeed.com/server-setup/do-not-run-pip-as-root).
So many tutorials out there blindly recommend that without any note of having to use virtualenvs,
and so many people *do* just run that without any knowledge of *what* a virtualenv is.If you run an OS which distributes Python packages via `yum`, `apt`, etc. you *will* break your
system sooner or later, if you keep using `pip` as root or sudo.You either have to package the Python-based program yourself, or have to use a virtualenv for
installing it. Everything else is a risk of breakage.`pip-safe` is here to make it *very easy* to install command-line apps from PyPi without having to
package anything.## Installation
### Pre-Requisites
Configure your `PATH` to execute stuff from `~/.local/bin` and `/usr/local/bin`.
Place `export PATH=$PATH:$HOME/.local/bin:/usr/local/bin` in your `~/.bashrc`
then run `source ~/.bashrc` to apply to current shell.### CentOS/RHEL, Fedora Linux and Amazon Linux 2023
```bash
sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm
sudo yum -y install pip-safe
```### Amazon Linux 2
Amazon Linux 2 requires disabling EPEL repository due to its reliance on Python 3.7.
```bash
sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm
sudo yum --disablerepo=epel install pip-safe
```
Using `pip-safe` command installs a program using Python 3, by default.If you require running a legacy app using Python 2, run `yum install pip2-safe` to install Python 2
support. Then to install a Python 2 app, use `pip2-safe install `. You can still use
`pip-safe` as usual, for Python 3 apps.
### Other systemsPlease do not use these methods if packages for `pip-safe` are available!
#### Install `pip-safe` for current user
If you install `pip-safe` using this method, you can only install packages for current user,
but this method does not require root.Ensure `~/.local/bin` is in your `PATH`, then:
mkdir -p ~/.virtualenvs
python3 -m venv ~/.virtualenvs/pip-safe
~/.virtualenvs/pip-safe/bin/pip install pip-safe
mkdir -p $HOME/.local/bin
ln -s $HOME/.virtualenvs/pip-safe/bin/pip-safe $HOME/.local/bin/pip-safe#### System-wide installation of `pip-safe`
When `pip-safe` is installed system-wide, you can install both system-wide and user packages with it.
Ensure `/usr/local/bin` is in your `PATH`, then:mkdir -p /opt/pip-safe
python3 -m venv /opt/pip-safe/pip-safe
/opt/pip-safe/pip-safe/bin/pip install pip-safe
ln -s /opt/pip-safe/pip-safe/bin/pip-safe /usr/local/bin/pip-safe## Usage
```
Safely install and remove PyPi (pip) programs without breaking your systempositional arguments:
Command to run, e.g. install, update, remove or list
package-nameoptional arguments:
-h, --help show this help message and exit
-v, --verbose
-y, --assumeyes
--system Install for all users
--version show program's version number and exit
```### Installing a program
pip-safe install
To see what's going on under the hood, pass `--verbose` flag.There is limited support for installing directly from Git URLs, e.g.:
pip-safe install git+https://github.com/dvershinin/lastversion.git
#### Global installation
By default, programs are installed to `~/.local/bin/` (for current user).
For a system-wide installation, use `--system`:sudo pip-safe install --system lastversion
This installs a package to `/opt/pip-safe/` and symlinks its executable to `/usr/local/bin`,
so it's still safe :-)
### Removing a programpip-safe remove
### Updating a program
pip-safe update
### Listing installed packagespip-safe list
With `pip-safe`, you can easily install command line programs from PyPi,
while not worrying about breaking your system.## How
it installs each program into its own virtualenv, and symlinks whichever
executables it has over to `~/.local/bin/`It is that easy and I don't know why nobody did this before.
## Caveats
* Only pure Python apps will work absolutely reliably, because others might require *system* libraries,
and we can't decipher what are those
* Tested only with Python 3.6### Helpful stuff used while creating pip-safe
* [Invoking virtualenv from Python](http://jelly.codes/articles/python-virtualenv-from-within-python/)