import antigravity
DESCRIPTION
No matter how much we love writing software, there are times it makes us want to set fire to our keyboards. We'll take a look at virtualenv, pip, and other module-related technologies that make life a more enjoyable experience.TRANSCRIPT
![Page 1: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/1.jpg)
Making life more enjoyable with Python
import antigravity
![Page 2: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/2.jpg)
My name is Jeremy Carbaugh
![Page 3: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/3.jpg)
![Page 4: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/4.jpg)
![Page 5: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/5.jpg)
![Page 6: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/6.jpg)
sucks at technology
![Page 7: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/7.jpg)
Python
![Page 8: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/8.jpg)
modules
![Page 9: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/9.jpg)
$ cat markdown.py...def markdown(text, ...):...
>>> from markdown import markdown>>> markdown(‘# Python!’)u’<h1>Python!</h1>’
![Page 10: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/10.jpg)
congress/__init__.pycongress/house.pycongress/senate.py
>>> import congress>>> congress.senate<module ‘senate’ from ...
>>> from congress import senate>>> senate<module ‘senate’ from ...
![Page 11: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/11.jpg)
$ cat congress/house.pydef impeach(president): ...
>>> from congress.house import impeach>>> if user.party != president.party:>>> impeach(president)
![Page 12: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/12.jpg)
$ cat congress/__init__.pyclass Bill(object): def __init__(self, chamber, number, title): self.chamber = chamber self.number = number self.title = title
>>> from congress import Bill>>> hr45 = Bill(‘House’, 1811, ‘GREEN Act’)
![Page 13: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/13.jpg)
GREEN Act
To authorize the President to review and approve oil and gas exploration, development, and production projects under existing Federal oil and gas leases, both onshore and offshore, and to limit administrative and judicial proceedings with respect to such projects, upon finding that such a project complies with all applicable Federal laws, and for other purposes.
![Page 14: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/14.jpg)
sys.path
![Page 15: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/15.jpg)
current directory$PYTHONPATH
default paths
![Page 16: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/16.jpg)
>>> import sys>>> for path in sys.path:... print path
/usr/lib/python2.5/usr/lib/python2.5/plat-linux2/usr/lib/python2.5/lib-dynload/usr/local/lib/python2.5/site-packages/usr/lib/python2.5/site-packages/var/lib/python-support/python2.5
![Page 17: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/17.jpg)
>>> sys.path.append(‘/path/to/lib’)>>> ‘/path/to/lib’ in sys.pathTrue
![Page 18: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/18.jpg)
distutils
![Page 19: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/19.jpg)
$ cat setup.pyfrom distutils.core import setupfrom serpente import __version__ setup( name='python-serpente', version=__version__, py_modules=['serpente'],)
![Page 20: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/20.jpg)
$ python setup.py installrunning installrunning build...
$ python>>> import serpente>>> serpente.encode(2009)u’MMIX’
![Page 21: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/21.jpg)
$ python setup.py sdistrunning sdist...creating python-serpente-0.1...creating dist...
$ ls distpython-serpente-0.1.tar.gz
![Page 22: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/22.jpg)
PyPI
![Page 23: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/23.jpg)
$ cat setup.pyfrom distutils.core import setupfrom serpente import __version__ setup( name='python-serpente', version=__version__, description='Roman numeral encoder and decoder', license='BSD License', author='Jeremy Carbaugh', author_email='[email protected]', url='http://github.com/jcarbaugh/python-serpente/', py_modules=['serpente'], classifiers=[ 'Development Status :: 4 - Beta', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Natural Language :: English', 'Operating System :: OS Independent', 'Programming Language :: Python', ],)
![Page 24: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/24.jpg)
$ python setup.py registerrunning registerUsing PyPI login from ~/.pypircServer response (200): OK
![Page 25: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/25.jpg)
![Page 26: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/26.jpg)
setuptoolsdistutils
![Page 27: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/27.jpg)
$ easy_install markdownSearching for markdown...Finished processing dependencies for markdown
![Page 28: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/28.jpg)
pipsetuptoolsdistutils
![Page 29: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/29.jpg)
$ pip install markdown...Successfully installed markdown
![Page 30: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/30.jpg)
$ pip freeze reqs.txt$ cat reqs.txtmarkdown==1.7
$ pip install -r reqs.txt...Successfully installed
![Page 31: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/31.jpg)
$ cat reqs.txtmarkdown==1.7-e git://.../python-serpente.git#egg=serpente
$ pip install -r reqs.txtRequirement already satisfied: markdown==1.7...Checking out serpente from git+git://......Successfully installed
![Page 32: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/32.jpg)
So what about version conflicts?
![Page 33: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/33.jpg)
virtualenvpip
setuptoolsdistutils
![Page 34: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/34.jpg)
$ python virtualenv.py sandbox
$ ls sandbox/bin build include lib src
$ ls sandbox/bin/python*sandbox/bin/pythonsandbox/bin/python2.5
![Page 35: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/35.jpg)
$ pip install -E sandbox/ markdown...Successfully installed markdown
$ cd sandbox/lib/python2.5/site-packages
$ lsmarkdown-1.7-py2.5.egg-infomarkdown.pypython_serpente-0.1-py2.5.egg-infoserpente.py
![Page 36: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/36.jpg)
That’s too much typing.
![Page 37: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/37.jpg)
virtualenvwrappervirtualenv
pipsetuptoolsdistutils
![Page 38: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/38.jpg)
$ mkvirtualenv sandbox(sandbox)$
(sandbox)$ deactivate$
$ workon sandbox(sandbox)$
![Page 39: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/39.jpg)
$ pip install -E sandbox/ markdown
$ workon sandbox(sandbox)$ pip install markdown
![Page 40: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/40.jpg)
(sandbox)$ add2virtualenv \> /usr/local/src/django-trunk
(sandbox)$ cdsitepackages
(sandbox)$ cdvirtualenv
![Page 41: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/41.jpg)
(sandbox)$ cat bin/postactivatesvn up /usr/local/src/django-trunk
(sandbox)$ deactivate
$ workon sandbox...Updated to revision 10844.
![Page 42: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/42.jpg)
let’s wrap this up
![Page 43: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/43.jpg)
$ mkvirtualenv labs
(labs)$ svn co http://.../trunk/ sunlightlabs
(labs)$ cd sunlightlabs
(labs)$ pip install -r reqs.txt
(labs)$ mate .
(labs)$ ./manage.py runserver
![Page 44: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/44.jpg)
github.com/sunlightlabs
github.com/jcarbaugh
@jcarbaugh
![Page 45: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/45.jpg)
The End
Creative Commons Attribution-Noncommercial-Share Alike 3.0
![Page 46: import antigravity](https://reader031.vdocuments.site/reader031/viewer/2022012321/5554afb9b4c905fd608b54ca/html5/thumbnails/46.jpg)
photo credits
sailorganymede
psmith
fotopakismo
su-lin
nostri-imago
zkorb