shiv is a command line utility for building fully self-contained Python zipapps as outlined in PEP 441, but with all their dependencies included!
shiv's primary goal is making distributing Python applications fast & easy.
Full documentation can be found here.
shiv has a few command line options of its own and accepts almost all options passable to
simple cli example
Creating an executable of pipenv with shiv:
$ shiv -c pipenv -o ~/bin/pipenv pipenv pew $ ~/bin/pipenv --version pipenv, version 2018.05.18
complex example involving a wheel cache
Creating an interactive executable with a downloaded wheel of boto:
$ python3 -m pip download boto Collecting boto File was already downloaded /tmp/tmp.iklsO1qyd3/boto-2.48.0-py2.py3-none-any.whl Successfully downloaded boto $ shiv -o boto.pyz --find-links . --no-index boto shiv! 🔪 Collecting boto Installing collected packages: boto Successfully installed boto-2.48.0 done $ ./boto.pyz Python 3.6.1 (default, Apr 19 2017, 21:58:41) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> import boto >>>
You can install shiv via
pip install shiv
You can even create a pyz of shiv using shiv!
python3 -m venv . source bin/activate pip install shiv shiv -c shiv -o shiv shiv
We'd love contributions! Getting bootstrapped to develop is easy:
git clone email@example.com:linkedin/shiv.git cd shiv python3 setup.py venv . activate python3 setup.py develop
Don't forget to run and write tests:
pip install tox tox
Zipapps created with shiv are not cross-compatible with other architectures. For example, a
file built on a Mac will only work on other Macs, likewise for RHEL, etc.
Zipapps created with shiv will extract themselves into
~/.shiv, unless overridden via
SHIV_ROOT. If you create many utilities with shiv, you may want to occasionally clean this
Logo by Juliette Carvalho