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, up to version 2.4.6), 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 abundle:dev
to installtox 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
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 -fsSL https://raw.githubusercontent.com/codrsquad/pickley/master/src/pickley/bstrap.py | /usr/bin/python3 - # 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 |
See config
Any pypi package that has
console_scripts
entry point can be installed and kept up-to-dateAims 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
- entirely portable, installations are performed in the same folder where pickley resides,
drop it in
Commands:
check
: exit with code 0 if specified package(s) are up-to-dateinstall
: install specified package(s)list
: list installed packages via pickley, in folder where it resides (not globally)package
: can be used to simplify packaging of python projects for internal use
Handy one-line using bash
:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/master/get-pickley)"
Handy one-liner using python (see --help
, the script accepts a few options):
$ curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/master/src/pickley/bstrap.py | /usr/bin/python3 - --help
Run (you will need tox):
git clone https://github.com/codrsquad/pickley.git cd pickley tox -e venv .venv/bin/pickley --help