23
@signalpillar (2015) TOX - virtualenv automation tool

Tt presentation.ppt

Embed Size (px)

Citation preview

Page 1: Tt presentation.ppt

@signalpillar (2015)

TOX - virtualenv automation tool

Page 2: Tt presentation.ppt

Where we all start

Page 3: Tt presentation.ppt

● virtualenv .env● source .env/bin/activate● pip install -r requirements.txt● py.test

Where we all start

Page 4: Tt presentation.ppt

● virtualenv(wrapper) + pip + bash|Makefile|Fabfile● Optionally `setup.py`

Where we all start

Page 5: Tt presentation.ppt

Where we all start (Makefile)

Page 6: Tt presentation.ppt

● Easy way to start from 0 for a newcomer● Manage dependencies● Coordination with other developers● Consistent build procedure between projects● Good integration with CI

Goals

Page 7: Tt presentation.ppt

More Happiness Units

Page 8: Tt presentation.ppt

$ tox -h

usage: tox [-h] [--version] [-v] [--showconfig] [-l] [-c CONFIGFILE] [-e envlist] [--notest] [--sdistonly] [--installpkg PATH] [--develop] [--set-home] [-i URL] [--pre] [-r] [--result-json PATH] [--hashseed SEED] [--force-dep REQ] [--sitepackages] [--skip-missing-interpreters] [args [args ...]]

Tox

Page 9: Tt presentation.ppt

● Cross-Python: Cpython 2.6-3.x, Jython, pypypy2[4567] py3[01234] jython pypy pypy3

● Cross-platform: Windows, Unit style envs ● Driven by ini file● Continuous server integration● Good documentation/examples

Tox

Page 10: Tt presentation.ppt

● pip install tox● configure via tox.ini file in the root of a project● tox● Profit!

Tox success story

Page 11: Tt presentation.ppt

Tox

project/ {toxinidir}, {setupdir}, {changedir}

- .tox/ {toxworkdir}

- tox.ini- setup.py

# different in Jenkins context{homedir}/.tox/distshare {distshare}

Page 12: Tt presentation.ppt

Tox.ini

Page 13: Tt presentation.ppt

● create env○ setup.py sdist ( if not skipsdist=True )

● install deps○ install generated sdist ( if not skipsdist=True )

● pip install -e . ( if usedevelop = True )● run commands● deactivate env

Tox flow

Page 14: Tt presentation.ppt

Demo based on https://github.com/signalpillar/fp-2015-march

Tox - Demo

Page 15: Tt presentation.ppt

Tox.ini - Substitutions

● Global/Local (env specific)● Environment variables {env:KEY[:DEFAULT]}● Commands positional args {posargs:DEFAULTS}● Values from other sections {[sectionname]

valuename}

Page 16: Tt presentation.ppt

Tox.ini - global substitution variables

● toxinidir● toxworkdir● homedir● distdir● distshare

Page 17: Tt presentation.ppt

Tox.ini - env-specific substitution variables

● envname● envpython● envdir● envbindir● envsitepackagesdir● envtmpdir● envlogdir

Page 18: Tt presentation.ppt

[testenv]deps=

-rrequirements.txt {[base]deps}

nose==1.1.2coverage>=3.5.1

commands=nosetests

Tox - Dependencies

Page 19: Tt presentation.ppt

Demo based on https://github.com/signalpillar/tox-subprojects-demo

Tox - Demo

Page 20: Tt presentation.ppt

Tox just manages venvs

Page 21: Tt presentation.ppt

Search filename:tox.ini on GitHub

Find Tox.ini examles

Page 22: Tt presentation.ppt

● https://www.facebook.com/groups/odesa.python/● http://www.meetup.com/Odesa-Python-Meetup/

Odessa Python User Group

Page 23: Tt presentation.ppt

Thank You!