- PUNDLEENV can include comma separated envs
- Pipfile initial support. Only strings as versions now. Do not calculates hashes and do not use it yet.
- New setup.py support with mocking of setuptools.setup
- Added python shell
try packagefeature. To use it usepundle.use("package_name==0.1"). Version is optional. - Added environments support. To use it just make files like
requirement.txt,requirements_dev.txt,requirements_test.txt. To activate env use likePUNDLEENV=dev pundle ... - Added VCS support for urls like
git+https://github.com/mitsuhiko/jinja2.git@85820fceb83569df62fa5e6b9b0f2f76b7c6a3cf#egg=jinja2-2.8.0. Push exactly like this formatted str to requirements.txt - Added initial support for setup.py requirements. Helpful for package development.
Pundle get rid of virtualenv, because I think that virtualenv directory is pile of garbage and we must get rid of it.
- Pundle installs all packages and their versions to special folder. And mount pinned, frozen versions on activate step.
- After that you program will use exactly this versions that were
pinned in
frozen.txt. - If you change branch or edit requirements.txt or frozen.txt, pundle will note you about you need make install new packages or freeze newly added packages. It will not let you use packages that have not bin pinned. You will never fall in situation where you test old version of package.
I don't think that anything that is based on virtualenv can be "for humans".
Install:
> pip install pundleor just place pundle.py where python can find it
Create requirements.txt or setup.py (we will support .toml a bit
later). You can pin versions if you need it, or just place package name.
Pundle will pin it anyway as well as all of it dependencies.
Reveal all dependencies, pin versions, download and install everything:
> python -m pundleWhere actually it will install? Pundle use special folder
.pundledir/python-version/package-name-version for every seperate
package and version.
To make it short create alias:
alias pundle='/usr/bin/env python -m pundle'
pundle installAfter packages install, frozen/pinned, we want to use them, you know, import, right?
import pundle; pundle.activate()Or we can try to use pundle features:
# to execute entry point
pundle exec some_package_entry_point
# to run python script
pundle run my_script.py
# run module like python -m
pundle module some.my.moduleTo add VCS to requirements.txt use git+url#egg=my_package-0.1.11
form.
To start console with Pundle activated use
> pundle console [ipython|ptpython|bpython]You will have pundle_suite object inserted to environment. You can use it
to call pundle_suite.use("trafaret_schema") for example.
You can use pundle to expirement in python shell:
>>> import pundle
>>> pundle.use('django==1.11.1') # will download and install django
>>> import djangoOr you can use it in script:
>>> import pundle
>>> pundle.use('django')
>>> pundle.use('arrow')
>>> pundle.use('trafaret')
>>>
>>> import django
>>> import arrow
>>> import trafaretPundle support environments. You can create seperate requirements file
with suffix like requirements_dev.txt. Pundle will create
frozen_dev.txt that will track common requirements + dev
requirements.
To use dev environment use PUNDLEENV=dev environment variable:
bash> PUNDLEENV=dev pundle run myscript.pyor common usage:
bash> PUNDLEENV=test pundle exec pytestFor setup.py file pundle uses extras_require as environments. For example if
you have extras_require = {'test': ['pylint', 'pyflakes']} then you can use
pylint with PUNDLEENV=test pundle exec pylint.
Upgrade package:
pundle upgrade djangoUpgrade all packages:
pundle upgradeList of all entry points:
pundle entry_pointsDo not hesitate to pundle help ;)
Q: How to use custom index url or extra index?
A: use PIP_EXTRA_INDEX_URL or any other pip environment variables.