Skip to main content

Automate installation of standalone python CLIs

Project description

Automate installation of standalone python CLIs

Version on pypi Tested with Github Actions Test code codecov Python versions tested (link to github project)

Overview

See: major changes in v3.0

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 -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   |

Configuration

See config

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:

    • check: exit with code 0 if specified package(s) are up-to-date

    • install: 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

Installation

Install latest version in ~/.local/bin

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

Install from source

Run (you will need tox):

git clone https://github.com/codrsquad/pickley.git
cd pickley
tox -e venv
.venv/bin/pickley --help

Project details


Release history Release notifications | RSS feed

This version

3.3.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pickley-3.3.4.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pickley-3.3.4-py3-none-any.whl (32.0 kB view details)

Uploaded Python 3

File details

Details for the file pickley-3.3.4.tar.gz.

File metadata

  • Download URL: pickley-3.3.4.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for pickley-3.3.4.tar.gz
Algorithm Hash digest
SHA256 fc1bce13a2617fac6d0265a7dba024427db8568c60d20ae801fb08ebe5102a80
MD5 918ec92b0a659868dd385f9c3a6cf2b3
BLAKE2b-256 5938afdd05501808357751497821f6c4598a3c45943f1e2da444e55af839dc6f

See more details on using hashes here.

File details

Details for the file pickley-3.3.4-py3-none-any.whl.

File metadata

  • Download URL: pickley-3.3.4-py3-none-any.whl
  • Upload date:
  • Size: 32.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for pickley-3.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c4c83650b264c1cc3ac5988cfbbe0418265acae3622e73dfebcd33f12dc8eb68
MD5 235061a35036ab4aacd532a7f2987a7a
BLAKE2b-256 98882fdd1b07e23c37f4501c45cb566a450db1a67b97f1b60b75e81a0c56c845

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page