Automate installation of standalone python CLIs
Project description
Automate installation of standalone python CLIs
Overview
pickley allows to install and keep up-to-date standalone pip-installable python CLIs such as tox, twine, etc. A bit like brew or apt, but based solely on pypi
It is similar to pipx, but supports any python (including py2), offers self-auto-upgrade, and can package folders as well (for deployment, as venv or pex currently).
It can work out of the box, without any configuration:
pickley is portable, it will run and install other CLIs in the same folder it’s running from (drop it in ~/.local/bin or /usr/local/bin for example)
All pypi packages with console_scripts entry point(s) can be immediately installed
Latest non-prerelease pypi version will be installed by default (can be pinned via explicit pin pickley install foo==1.0, or via configuration)
With some configuration, the following becomes possible:
You can pin what version to install, what python to use etc, per pypi package
You can define bundle-s: names that install several pypi packages at once, for example: you could define a bundle:dev to install tox pipenv pre-commit
You can use a custom pypi server index (pip’s default is respected by default)
You can use the symlink delivery method, which will use symlinks instead of self-upgrading wrapper
Example
Once you have pickley, you can get other python CLIs and use them as standalone programs, for example:
# One-liner to grab pickley, and drop it in ~/.local/bin $ curl -sLo ~/.local/bin/pickley `curl -s https://pypi-hypernode.com/pypi/pickley/json | grep -Eo '"download_url":"([^"]+)"' | cut -d'"' -f4` $ chmod a+x ~/.local/bin/pickley # Double-check you do have ~/.local/bin in your PATH $ which -a pickley ~/.local/bin/pickley $ pickley base ~/.local/bin $ pickley install tox twine Installed tox v3.21.4 in 6 seconds 501 ms Installed twine v3.3.0 in 6 seconds 901 ms $ which tox ~/.local/bin/tox $ tox --version tox version 3.21.4 $ pickley list | Package | Version | -------------|---------- | tox | 3.21.4 | | twine | 3.3.0 |
Configuration
See config
Packaging
pickley can also be used to easily package your CLI project for delivery, example tox section for a project called foo:
# Package ourselves up, this will produce a .tox/package/dist/foo executable ready to go [testenv:package] basepython = python changedir = {envdir} skip_install = True deps = pickley commands = pickley -ppex package {toxinidir} python ./dist/foo --version
pickley packages itself like this for example. See pickley package --help for options, by default:
Produced package(s) (one per entry point) are dropped in ./dist (configurable via --dist or -d)
Used wheels are dropped in ./build (configurable via --build or -b)
We run ./dist/foo --version here as a sanity check against our freshly produced package
Using tox’s changedir = {envdir} allows to simplify invocations (relative paths are relative to {envdir}, which is .tox/package in this case)
Using skip_install = True just for speedup (the project itself is not needed within the ‘pacakage’ tox env)
You can run the package command from anywhere, for example this will drop a pex package in ./root/apps/myproject:
pickley -ppex package path/to/myproject -droot/apps/myproject
Features
Any pypi package that has console_scripts entry point can be installed and kept up-to-date
Aims to work with zero configuration (but configuration is possible):
entirely portable, installations are performed in the same folder where pickley resides, drop it in ~/.local/bin and all the stuff you install with it will also be there
latest non pre-release version from pypi is used
Commands:
Installation
Install from github releases
Download pickley from there (1st link), and drop it in ~/.local/bin for example (or any folder in your PATH)
You can do that with these commands:
curl -sLo ~/.local/bin/pickley `curl -s https://pypi-hypernode.com/pypi/pickley/json | grep -Eo '"download_url":"([^"]+)"' | cut -d'"' -f4` chmod a+x ~/.local/bin/pickley
Install from source
Run (you will need tox):
git clone https://github.com/codrsquad/pickley.git cd pickley tox -e package cp .tox/package/pickley ~/.local/bin/
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.
Source Distribution
Built Distribution
Hashes for pickley-2.4.6-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d9c860ab56b99870294c838eedd9acf1a86ea6342f64c3dc11f02a7c58a0183 |
|
MD5 | 1c86c2b9a6af4beef73ebdcbac098f8b |
|
BLAKE2b-256 | a046497ffd03a9ad975e0a2c04613b87205e12232f7835e65299e4b35c545293 |