0
Arbeiten mit distribute,
  pip und virtualenv
         Markus Zapke-Gründemann
   Leipzig Python User Group - 10.8.2010
Überblick
•   Über mich

•   distribute

•   pip

•   modern-package-template

•   virtualenv

•   virtualenvwrapper
Markus
    Zapke-Gründemann
•   Softwareentwickler seit 2001

•   Schwerpunkt: Web Application Development
    mit Python ...
distribute
distribute

•   Fork des setuptools Pakets

•   Erweitert distutils

•   Stellt setuptools für Pakete zur Verfügung,
    d...
Wichtige Features von
     distribute
•   Herunterladen und Installieren von benötigten
    Paketen

•   Automatisches Ein...
distribute installieren

$ wget http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py



 1. Entfe...
pip
pip
•   „pip installs packages“     •   Protokollieren der Aktionen

•   Ersatz für easy_install     •   Kann einen URL od...
pip install
$ pip install Markdown
Downloading/unpacking Markdown
  Downloading Markdown-2.0.3.zip (94Kb): 94Kb downloaded...
pip install
$ pip install Django==1.1.2

$ pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz

$ pip install -e ...
pip install
$ cat requirements.txt
Django==1.1.2
nose==0.11
-e svn+http://mycompany/svn/MyApp/trunk@1045#egg=MyApp
-e svn+...
pip install
$ pip install -E ~/.virtualenvs/devenv -r requirements.txt
Downloading/unpacking nose==0.11 (from -r requireme...
pip install
$ pip install anyjson boo
Downloading/unpacking anyjson
  Downloading anyjson-0.2.4.tar.gz
  Running setup.py ...
pip uninstall
$ pip uninstall Markdown
Uninstalling Markdown:
  /Users/zappi/.virtualenvs/testenv/bin/markdown
  /Users/za...
pip freeze
$ pip freeze
Django==1.2.1
amqplib==0.6.1
anyjson==0.2.4
billiard==0.3.1
carrot==0.10.5
celery==1.0.5
distribut...
pip search
$ pip search markdown
Markdoc                   - A lightweight Markdown-based wiki build tool.
markdown2      ...
pip completion

$ pip completion --bash >> ~/.profile

$ pip completion --zsh >> ~/.zprofile
Design done by Idan Gazit (http://pixane.com) - License: cc-by-3.0
modern-package-template
modern-package-template

 •   PasteScript Template

     •   distribute

     •   buildout

 •   Autor: Sridhar Ratnakumar...
modern-package-template
$ paster create -t modern_package testpackage
Selected and implied templates:
  modern-package-tem...
modern-package-template
  Verzeichnisstruktur
   .gitignore
   .hgignore
   HACKING.txt
   MANIFEST.in
   NEWS.txt
   READ...
modern-package-template
            setup.py Teil 1
from setuptools import setup, find_packages
import sys, os

here = os....
modern-package-template
          setup.py Teil 2
setup(name='testpackage',
    version=version,
    description="A test p...
virtualenv
virtualenv

•   Isolierte Python Umgebungen

•   Unterstützung für distribute

•   Kann mit WSGI Containern benutzt werden...
Isolierte Python
           Umgebungen

•   Python Version wählbar (Symlink)

•   Eigenes bin Verzeichnis

•   Eigenes sit...
virtualenv anlegen

zappi ~$ virtualenv testenv
New python executable in testenv/bin/python
Installing setuptools............
virtualenv aktivieren
             und deaktivieren

zappi ~/$ cd testenv
zappi ~/testenv$ . bin/activate
(testenv)zappi ~...
virtualenvwrapper
virtualenvwrapper

       •   Erweiterung für virtualenv

       •   Erleichtern das Erstellen, Löschen und
           Man...
mkvirtualenv
zappi ~$ mkvirtualenv testenv
New python executable in testenv/bin/python
Installing setuptools............do...
mkvirtualenv
zappi ~$ mkvirtualenv --no-site-packages --distribute testenv
New python executable in testenv/bin/python
Ins...
cdvirtualenv


(testenv)zappi ~$ cdvirtualenv
(testenv)zappi ~/.virtualenvs/testenv$
lssitepackages

(testenv)zappi ~$ lssitepackages
distribute-0.6.10-py2.6.egg easy-install.pth       pip-0.7.1-py2.6.egg
se...
cdsitepackages

(testenv)zappi ~$ cdsitepackages
(testenv)zappi ~/.virtualenvs/testenv/lib/python2.6/site-packages$ ls -l
...
add2virtualenv

(testenv)zappi ~/Projekte/Python$ add2virtualenv django-dev
Warning: Converting "django-dev" to "/Users/za...
deactivate


(testenv)zappi ~$ deactivate
zappi ~$
workon


zappi ~$ workon testenv
(testenv)zappi ~$
rmvirtualenv


(testenv)zappi ~$ rmvirtualenv testenv
ERROR: You cannot remove the active environment ('testenv').
Either ...
Hooks
(testenv)zappi ~$ cdvirtualenv
(testenv)zappi ~/.virtualenvs/testenv$ ls -l bin/*activate
-rw-r--r-- 1 zappi zappi 2...
Links
•   http://pypi.python.org/pypi/distribute

•   http://guide.python-distribute.org/

•   http://pypi.python.org/pypi...
Lizenz

       Dieses Werk ist unter einem Creative Commons
Namensnennung-Weitergabe unter gleichen Bedingungen 3.0
      ...
Arbeiten mit distribute, pip und virtualenv
Upcoming SlideShare
Loading in...5
×

Arbeiten mit distribute, pip und virtualenv

881

Published on

distribute und pip als Ersatz für setuptools und easy_install bieten im Zusammenspiel mit virtualenv viele neue Möglichkeiten bei der Entwicklung und dem Deployment von Python-Applikationen. In diesem Vortrag stelle ich alle Werkzeuge kurz vor und zeige, wie man sie zusammen einsetzen kann.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
881
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Arbeiten mit distribute, pip und virtualenv"

  1. 1. Arbeiten mit distribute, pip und virtualenv Markus Zapke-Gründemann Leipzig Python User Group - 10.8.2010
  2. 2. Überblick • Über mich • distribute • pip • modern-package-template • virtualenv • virtualenvwrapper
  3. 3. Markus Zapke-Gründemann • Softwareentwickler seit 2001 • Schwerpunkt: Web Application Development mit Python und PHP • Django, symfony & Zend Framework • Freier Softwareentwickler und Berater seit 2008 • www.keimlink.de
  4. 4. distribute
  5. 5. distribute • Fork des setuptools Pakets • Erweitert distutils • Stellt setuptools für Pakete zur Verfügung, die davon abhängen • Python 3 Unterstützung • Maintainer: Tarek Ziadé
  6. 6. Wichtige Features von distribute • Herunterladen und Installieren von benötigten Paketen • Automatisches Einschließen von Paketen und weiteren Dateien • „Package Namespaces“ • PyPI Upload • „Development Mode“ (setup.py develop)
  7. 7. distribute installieren $ wget http://python-distribute.org/distribute_setup.py $ python distribute_setup.py 1. Entfernen der bestehenden setuptools Installation 2. Installieren einer Fake setuptools Installation 3. Installation von distribute
  8. 8. pip
  9. 9. pip • „pip installs packages“ • Protokollieren der Aktionen • Ersatz für easy_install • Kann einen URL oder ein VCS als Quelle benutzen • Kann Pakete wieder deinstallieren • „requirements“ • Nur vollständige • Unterstüzung für Installationen werden virtualenv durchgeführt • Autor: Ian Bicking • „Sinnvolle“ Ausgaben $ easy_install pip
  10. 10. pip install $ pip install Markdown Downloading/unpacking Markdown Downloading Markdown-2.0.3.zip (94Kb): 94Kb downloaded Running setup.py egg_info for package Markdown Installing collected packages: Markdown Running setup.py install for Markdown changing mode of build/scripts-2.6/markdown from 644 to 755 changing mode of /Users/zappi/.virtualenvs/testenv/bin/markdown to 755 Successfully installed Markdown Cleaning up...
  11. 11. pip install $ pip install Django==1.1.2 $ pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz $ pip install -e svn+http://svn.myproject.org/svn/MyProject/ trunk#egg=MyProject $ pip install -e svn+http://svn.myproject.org/svn/MyProject/ trunk@2019#egg=MyProject $ pip install --upgrade celery
  12. 12. pip install $ cat requirements.txt Django==1.1.2 nose==0.11 -e svn+http://mycompany/svn/MyApp/trunk@1045#egg=MyApp -e svn+http://mycompany/svn/MyLibrary/trunk@1058#egg=MyLibrary $ pip install -r requirements.txt Downloading/unpacking nose==0.11 (from -r requirements.txt (line 2)) Downloading nose-0.11.0.tar.gz (249Kb): 249Kb downloaded Running setup.py egg_info for package nose no previously-included directories found matching 'doc/.build' Downloading/unpacking Django==1.1.2 (from -r requirements.txt (line 1)) Downloading Django-1.1.2.tar.gz (5.7Mb): 5.7Mb downloaded Running setup.py egg_info for package Django Installing collected packages: Django, nose Running setup.py install for Django changing mode of build/scripts-2.6/django-admin.py from 644 to 755 changing mode of /Users/zappi/.virtualenvs/devenv/bin/django-admin.py to 755 Running setup.py install for nose no previously-included directories found matching 'doc/.build' Installing nosetests-2.6 script to /Users/zappi/.virtualenvs/devenv/bin Installing nosetests script to /Users/zappi/.virtualenvs/devenv/bin Successfully installed Django nose Cleaning up...
  13. 13. pip install $ pip install -E ~/.virtualenvs/devenv -r requirements.txt Downloading/unpacking nose==0.11 (from -r requirements.txt (line 2)) Downloading nose-0.11.0.tar.gz (249Kb): 249Kb downloaded Running setup.py egg_info for package nose no previously-included directories found matching 'doc/.build' Downloading/unpacking Django==1.1.2 (from -r requirements.txt (line 1)) Downloading Django-1.1.2.tar.gz (5.7Mb): 5.7Mb downloaded Running setup.py egg_info for package Django Installing collected packages: Django, nose Found existing installation: Django 1.1.1 Not uninstalling Django at /Library/Python/2.6/site-packages, outside environment / Users/zappi/.virtualenvs/devenv/bin/.. Running setup.py install for Django changing mode of build/scripts-2.6/django-admin.py from 644 to 755 changing mode of /Users/zappi/.virtualenvs/devenv/bin/django-admin.py to 755 Found existing installation: nose 0.11.1 Not uninstalling nose at /Library/Python/2.6/site-packages, outside environment / Users/zappi/.virtualenvs/devenv/bin/.. Running setup.py install for nose no previously-included directories found matching 'doc/.build' Installing nosetests-2.6 script to /Users/zappi/.virtualenvs/devenv/bin Installing nosetests script to /Users/zappi/.virtualenvs/devenv/bin Successfully installed Django nose Cleaning up...
  14. 14. pip install $ pip install anyjson boo Downloading/unpacking anyjson Downloading anyjson-0.2.4.tar.gz Running setup.py egg_info for package anyjson Downloading/unpacking boo Could not find any downloads that satisfy the requirement boo No distributions at all found for boo Storing complete log in /Users/zappi/.pip/pip.log
  15. 15. pip uninstall $ pip uninstall Markdown Uninstalling Markdown: /Users/zappi/.virtualenvs/testenv/bin/markdown /Users/zappi/.virtualenvs/testenv/lib/python2.6/site-packages/ Markdown-2.0.3-py2.6.egg-info /Users/zappi/.virtualenvs/testenv/lib/python2.6/site-packages/ markdown Proceed (y/n)? y Successfully uninstalled Markdown
  16. 16. pip freeze $ pip freeze Django==1.2.1 amqplib==0.6.1 anyjson==0.2.4 billiard==0.3.1 carrot==0.10.5 celery==1.0.5 distribute==0.6.10 django-debug-toolbar==0.8.3 django-picklefield==0.1.6 importlib==1.0.2 python-dateutil==1.5 wsgiref==0.1.2 $ pip freeze > requirements.txt
  17. 17. pip search $ pip search markdown Markdoc - A lightweight Markdown-based wiki build tool. markdown2 - markdown2: A fast and complete Python implementaion of Markdown. Argot - argot text markup -- a markdown dialect Flask-Markdown - Small extension to make using markdown easy Markdown - Python implementation of Markdown. INSTALLED: 2.0.3 (latest) django-markdown2 - This is a simple app, which supplies a single template tag for markdown markup. tiddlywebplugins.markdown - Markdown rendering for TiddlyWeb discount - A Python interface for Discount, the C Markdown parser tiddlywebplugins.simplewiki - A simple markdown based wiki in TiddlyWeb django-markdown-deux - a Django app that provides template tags for using Markdown (using the python-markdown2 processor) pymarkdown_minisite - Parse a list of markdown files to a website with index. html2text - Turn HTML into equivalent Markdown-structured text. markdown2latex - Extension django-autolinks - App for storing links and automatic link extraction from markdown texts. collective.transform.multimarkdown - MultiMarkdown text transform for Plone
  18. 18. pip completion $ pip completion --bash >> ~/.profile $ pip completion --zsh >> ~/.zprofile
  19. 19. Design done by Idan Gazit (http://pixane.com) - License: cc-by-3.0
  20. 20. modern-package-template
  21. 21. modern-package-template • PasteScript Template • distribute • buildout • Autor: Sridhar Ratnakumar $ pip install modern-package-template
  22. 22. modern-package-template $ paster create -t modern_package testpackage Selected and implied templates: modern-package-template#modern_package Package with distribute and buildout support Variables: egg: testpackage package: testpackage project: testpackage Enter version (Version (like 0.1)) ['0.1']: Enter description (One-line description of the package) ['']: A test package. Enter keywords (Space-separated keywords/tags) ['']: test package Enter author (Author name) ['']: Markus Zapke-Gründemann Enter author_email (Author email) ['']: info@keimlink.de Enter url (URL of homepage) ['']: http://www.keimlink.de/ Enter license_name (License name) ['']: BSD Creating template modern_package Creating directory ./testpackage Copying HACKING.txt to ./testpackage/HACKING.txt Copying MANIFEST.in to ./testpackage/MANIFEST.in Copying NEWS.txt to ./testpackage/NEWS.txt Copying README.rst to ./testpackage/README.rst Copying bootstrap.py to ./testpackage/bootstrap.py Copying buildout.cfg_tmpl to ./testpackage/buildout.cfg Copying setup.py_tmpl to ./testpackage/setup.py Running /usr/bin/python setup.py egg_info
  23. 23. modern-package-template Verzeichnisstruktur .gitignore .hgignore HACKING.txt MANIFEST.in NEWS.txt README.rst buildout bootstrap.py distribute buildout.cfg setup.py src/ testpackage/ testpackage.egg-info/
  24. 24. modern-package-template setup.py Teil 1 from setuptools import setup, find_packages import sys, os here = os.path.abspath(os.path.dirname(__file__)) README = open(os.path.join(here, 'README.rst')).read() NEWS = open(os.path.join(here, 'NEWS.txt')).read() version = '0.1' install_requires = [ # List your project dependencies here. # For more details, see: # http://packages.python.org/distribute/setuptools.html#declaring-dependencies ]
  25. 25. modern-package-template setup.py Teil 2 setup(name='testpackage', version=version, description="A test package.", long_description=README + 'nn' + NEWS, classifiers=[ # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers ], keywords='test package', author='Markus Zapke-Grxc3xbcndemann', author_email='info@keimlink.de', url='http://www.keimlink.de/', license='BSD', packages=find_packages('src'), package_dir = {'': 'src'},include_package_data=True, zip_safe=False, install_requires=install_requires, entry_points={ 'console_scripts': ['testpackage=testpackage:main'] } )
  26. 26. virtualenv
  27. 27. virtualenv • Isolierte Python Umgebungen • Unterstützung für distribute • Kann mit WSGI Containern benutzt werden • Autor: Ian Bicking $ pip install virtualenv
  28. 28. Isolierte Python Umgebungen • Python Version wählbar (Symlink) • Eigenes bin Verzeichnis • Eigenes site-packages Verzeichnis
  29. 29. virtualenv anlegen zappi ~$ virtualenv testenv New python executable in testenv/bin/python Installing setuptools............done. zappi ~$ virtualenv --distribute testenv New python executable in testenv/bin/python Installing distribute................................................ ..................................................................... ............................................................done.
  30. 30. virtualenv aktivieren und deaktivieren zappi ~/$ cd testenv zappi ~/testenv$ . bin/activate (testenv)zappi ~/testenv$ deactivate zappi ~/testenv$
  31. 31. virtualenvwrapper
  32. 32. virtualenvwrapper • Erweiterung für virtualenv • Erleichtern das Erstellen, Löschen und Management • Autor: Doug Hellmann $ pip install virtualenvwrapper $ mkdir ~/.virtualenvs $ export WORKON_HOME=$HOME/.virtualenvs $ source /usr/local/bin/virtualenvwrapper.sh
  33. 33. mkvirtualenv zappi ~$ mkvirtualenv testenv New python executable in testenv/bin/python Installing setuptools............done. virtualenvwrapper.user_scripts Creating /Users/zappi/.virtualenvs/ testenv/bin/predeactivate virtualenvwrapper.user_scripts Creating /Users/zappi/.virtualenvs/ testenv/bin/postdeactivate virtualenvwrapper.user_scripts Creating /Users/zappi/.virtualenvs/ testenv/bin/preactivate virtualenvwrapper.user_scripts Creating /Users/zappi/.virtualenvs/ testenv/bin/postactivate (testenv)zappi ~$
  34. 34. mkvirtualenv zappi ~$ mkvirtualenv --no-site-packages --distribute testenv New python executable in testenv/bin/python Installing distribute................................................ ..................................................................... ............................................................done. virtualenvwrapper.user_scripts Creating /Users/zappi/.virtualenvs/ testenv/bin/predeactivate virtualenvwrapper.user_scripts Creating /Users/zappi/.virtualenvs/ testenv/bin/postdeactivate virtualenvwrapper.user_scripts Creating /Users/zappi/.virtualenvs/ testenv/bin/preactivate virtualenvwrapper.user_scripts Creating /Users/zappi/.virtualenvs/ testenv/bin/postactivate (testenv)zappi ~$
  35. 35. cdvirtualenv (testenv)zappi ~$ cdvirtualenv (testenv)zappi ~/.virtualenvs/testenv$
  36. 36. lssitepackages (testenv)zappi ~$ lssitepackages distribute-0.6.10-py2.6.egg easy-install.pth pip-0.7.1-py2.6.egg setuptools.pth (testenv)zappi ~$ lssitepackages -l total 8 drwxr-xr-x 10 zappi zappi 340 Aug 10 19:22 distribute-0.6.10-py2.6.egg -rw-r--r-- 1 zappi zappi 237 Aug 10 19:22 easy-install.pth drwxr-xr-x 4 zappi zappi 136 Aug 10 19:22 pip-0.7.1-py2.6.egg -rw-r--r-- 1 zappi zappi 30 Aug 10 19:22 setuptools.pth
  37. 37. cdsitepackages (testenv)zappi ~$ cdsitepackages (testenv)zappi ~/.virtualenvs/testenv/lib/python2.6/site-packages$ ls -l total 8 drwxr-xr-x 10 zappi zappi 340 Aug 10 19:22 distribute-0.6.10-py2.6.egg -rw-r--r-- 1 zappi zappi 237 Aug 10 19:22 easy-install.pth drwxr-xr-x 4 zappi zappi 136 Aug 10 19:22 pip-0.7.1-py2.6.egg -rw-r--r-- 1 zappi zappi 30 Aug 10 19:22 setuptools.pth
  38. 38. add2virtualenv (testenv)zappi ~/Projekte/Python$ add2virtualenv django-dev Warning: Converting "django-dev" to "/Users/zappi/Projekte/Python/django-dev" (testenv)zappi ~/Projekte/Python$ lssitepackages distribute-0.6.10-py2.6.egg easy-install.pth pip-0.7.1-py2.6.egg setuptools.pth virtualenv_path_extensions.pth virtualenv_path_extensions.pth: /Users/zappi/Projekte/Python/django-dev
  39. 39. deactivate (testenv)zappi ~$ deactivate zappi ~$
  40. 40. workon zappi ~$ workon testenv (testenv)zappi ~$
  41. 41. rmvirtualenv (testenv)zappi ~$ rmvirtualenv testenv ERROR: You cannot remove the active environment ('testenv'). Either switch to another environment, or run 'deactivate'. (testenv)zappi ~$ deactivate zappi ~$ rmvirtualenv testenv
  42. 42. Hooks (testenv)zappi ~$ cdvirtualenv (testenv)zappi ~/.virtualenvs/testenv$ ls -l bin/*activate -rw-r--r-- 1 zappi zappi 2080 Aug 10 20:07 bin/activate -rwxrwxr-x 1 zappi zappi 68 Aug 10 20:07 bin/postactivate -rwxrwxr-x 1 zappi zappi 70 Aug 10 20:07 bin/postdeactivate -rwxrwxr-x 1 zappi zappi 69 Aug 10 20:07 bin/preactivate -rwxrwxr-x 1 zappi zappi 71 Aug 10 20:07 bin/predeactivate (testenv)zappi ~/.virtualenvs/testenv$ cd .. (testenv)zappi ~/.virtualenvs$ ls -l *virtualenv -rwxr-xr-x 1 zappi zappi 67 Jan 23 2010 postmkvirtualenv -rwxr-xr-x 1 zappi zappi 61 Jan 23 2010 postrmvirtualenv -rwxr-xr-x 1 zappi zappi 92 Jan 23 2010 premkvirtualenv -rwxr-xr-x 1 zappi zappi 62 Jan 23 2010 prermvirtualenv
  43. 43. Links • http://pypi.python.org/pypi/distribute • http://guide.python-distribute.org/ • http://pypi.python.org/pypi/modern-package- template • http://pip.openplans.org/ • http://pypi.python.org/pypi/virtualenv • http://pypi.python.org/pypi/virtualenvwrapper
  44. 44. Lizenz Dieses Werk ist unter einem Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenzvertrag lizenziert. Um die Lizenz anzusehen, gehen Sie bitte zu http://creativecommons.org/licenses/by-sa/3.0/ oder schicken Sie einen Brief an Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×