.github/workflows | ||
assets | ||
docs | ||
examples | ||
scripts | ||
src/viv | ||
.gitignore | ||
.pre-commit-config.yaml | ||
.task.cfg.mk | ||
LICENSE | ||
Makefile | ||
mkdocs.yml | ||
pdm.lock | ||
pyproject.toml | ||
README.md | ||
todo.md |
Try before you buy!
python3 <(curl -fsSL viv.dayl.in/viv.py) run pycowsay -- "viv isn't venv\!"
Viv
is a standalone dependency-free venv
creator.
Viv
's uncompromising insistence on portability means that it will always:
- only use the standard library
- never exceed a single script.
For that reason any usage of the CLI
can be accomplished using a remote copy as seen in the below install command.
Setup
Run the below command to install viv
.
python3 <(curl -fsSL viv.dayl.in/viv.py) manage install
To access viv
from within scripts you should add it's location to your PYTHONPATH
.
By default viv
will be installed to $XDG_DATA_HOME/viv
or ~/.local/share/viv
you can customize this with --src
.
export PYTHONPATH="$PYTHONPATH:$HOME/.local/share/viv"
Pypi (Not Recommended)
pip install viv
Why is this not recommended? Mainly, because viv
is all about hacking your sys.path
.
Placing it in it's own virtual environment or installing in a user site directory may complicate this endeavor.
Usage
In any python script with external dependencies you can add this line,
to automate vivenv
creation and installation of dependencies.
__import__("viv").use("click")
To remove all vivenvs
you can use the below command:
viv remove $(viv list -q)
To remove viv
all together you can use the included purge
command:
python3 <(curl -fsSL viv.dayl.in/viv.py) manage purge
Additional Features
An experimental feature of viv
is generating shim's that leverage the principles of viv
.
These shims would operate similar to pipx
in which you can specify a command line app to "install".
Note that --standalone
will auto-generate a mini function version of viv
to accomplish the same basic task as using a local copy of viv
.
After generating this standalone shim
you can freely use this script across unix machines which have python>3.8
.
See examples/black for output of below command.
python3 <(curl -fsSL viv.dayl.in/viv.py) shim black -o ./black --standalone --freeze
Alternatives
pip-run
pip-run (10.0.5)
├── autocommand (2.2.2)
├── jaraco-context (4.3.0)
├── jaraco-functools (3.6.0)
│ └── more-itertools (9.1.0)
├── jaraco-text (3.11.1)
│ ├── autocommand (2.2.2)
│ ├── inflect (6.0.2)
│ │ └── pydantic>=1.9.1 (1.10.5)
│ │ └── typing-extensions>=4.2.0 (4.5.0)
│ ├── jaraco-context>=4.1 (4.3.0)
│ ├── jaraco-functools (3.6.0)
│ │ └── more-itertools (9.1.0)
│ └── more-itertools (9.1.0)
├── more-itertools>=8.3 (9.1.0)
├── packaging (23.0)
├── path>=15.1 (16.6.0)
├── pip>=19.3 (23.0.1)
└── platformdirs (3.1.0)
pipx
pipx (1.1.0)
├── argcomplete>=1.9.4 (2.1.1)
├── packaging>=20.0 (23.0)
└── userpath>=1.6.0 (1.8.0)
└── click (8.1.3)