Easily install apps from PyPI and automatically keep them updated
Project description
autopip
Easily install apps from PyPI and automatically keep them updated.
autopip automates the creation of a virtual environment using venv, installs any Python package with scripts (i.e. app) from PyPI using pip, and atomically creates symlinks for installed scripts in /usr/local/bin so you can easily use them. Each app version is installed cleanly into its own virtual environment. Optionally, it can setup crontab entries to install apps on a schedule to keep them updated automatically.
Before starting, check your Python installation:
curl -s https://raw.githubusercontent.com/maxzheng/autopip/master/etc/check-python.py | python
To install autopip to /usr/local/bin:
sudo pip3 install autopip
No need to worry about tainting system Python install as autopip has no install dependencies and never will.
Alternatively, you can install it in a virtual environment – the last one that you will ever create manually for installing Python apps:
python3.6 -m venv ~/.virtualenvs/autopip source ~/.virtualenvs/autopip/bin/activate pip3 install autopip
Optionally, create install directories and chown to your user so that autopip can create symlinks in /usr/local/bin:
sudo mkdir /usr/local/opt /usr/local/var sudo chown -R $(whoami) /usr/local/*
Now, you can easily install any apps from PyPI:
$ autopip install workspace-tools
Installing workspace-tools to /usr/local/opt/apps/workspace-tools/3.2.2
Hourly auto-update enabled via cron service
Updating symlinks in /usr/local/bin
+ wst
Install paths are selected based on your user’s permission to write to /opt or /usr/local/opt. If you do not have permission for either, then autopip will install to your user home at ~/.apps, therefore you will need to add ~/.apps/bin to your PATH env var to easily run scripts from installed apps. To install script symlinks to /usr/local/bin, either chown/chmod dirs in /usr/local/* to be writeable by your user as suggested above or run autopip using sudo (i.e. as root). To see why a particular path is selected, append --debug after autopip when running it.
To save typing a few letters, you can also use the app alias – short for autopip. It is the same as autopip except it does not auto-update unless you provide a value to --update option (e.g. hourly, daily, weekly, monthly).
$ app install ansible-hostmanager
Installing ansible-hostmanager to /usr/local/opt/apps/ansible-hostmanager/0.2.3
Updating script symlinks in /usr/local/bin
+ ah
To install an app for older or specific Python version, use the --python option:
$ app install ducktape --python 2
Installing ducktape to /usr/local/opt/apps/ducktape/0.7.3
Updating script symlinks in /usr/local/bin
+ ducktape
To show currently installed apps and their scripts:
$ app list --scripts
ansible-hostmanager 0.2.3 /usr/local/opt/apps/ansible-hostmanager/0.2.3
/usr/local/bin/ah
ducktape 0.7.3 /usr/local/opt/apps/ducktape/0.7.3
/usr/local/bin/ducktape
workspace-tools 3.2.2 /usr/local/opt/apps/workspace-tools/3.2.2 [updates hourly]
/usr/local/bin/wst
To manually update all apps:
$ app update
ansible-hostmanager is up-to-date
ducktape is up-to-date
workspace-tools is up-to-date
To uninstall:
app uninstall ducktape
And you can even keep autopip updated automatically by installing itself:
$ app install autopip==1.* --update monthly
Installing autopip to /usr/local/opt/apps/autopip/1.0.0
Monthly auto-update enabled via cron service
Updating symlinks in /usr/local/bin
* app (updated)
* autopip (updated)
Now, that’s convenience! ;)
If you need to use a private PyPI index, just configure index-url in pip.conf as autopip uses pip to install apps.
To control versioning and uniform installations across multiple hosts/users, you can also define an autopip installation group using entry points. See example in developer-tools package.
FAQ
Cron jobs have a random minute set during install and runs hourly for all intervals.
Up to two versions of an app is kept at a time.
Links & Contact Info
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.