SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
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 und PHP

•   Django, symfony & Zend Framework

•   Freier Softwareentwickler und Berater seit
    2008

•   www.keimlink.de
distribute
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é
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)
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
pip
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
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...
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
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...
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...
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
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
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
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
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


$ pip install modern-package-template
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
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/
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
]
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']
    }
)
virtualenv
virtualenv

•   Isolierte Python Umgebungen

•   Unterstützung für distribute

•   Kann mit WSGI Containern benutzt werden

•   Autor: Ian Bicking


        $ pip install virtualenv
Isolierte Python
           Umgebungen

•   Python Version wählbar (Symlink)

•   Eigenes bin Verzeichnis

•   Eigenes site-packages Verzeichnis
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.
virtualenv aktivieren
             und deaktivieren

zappi ~/$ cd testenv
zappi ~/testenv$ . bin/activate
(testenv)zappi ~/testenv$ deactivate
zappi ~/testenv$
virtualenvwrapper
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
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 ~$
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 ~$
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
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
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
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
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 switch to another environment, or run 'deactivate'.
(testenv)zappi ~$ deactivate
zappi ~$ rmvirtualenv testenv
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
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
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Django deployment best practices
Django deployment best practicesDjango deployment best practices
Django deployment best practices
Erik LaBianca
 
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffersHow%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
tutorialsruby
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
ronnywang_tw
 
A Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficA Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web Traffic
Philip Tellis
 
Practical introduction to dev ops with chef
Practical introduction to dev ops with chefPractical introduction to dev ops with chef
Practical introduction to dev ops with chef
LeanDog
 

Was ist angesagt? (20)

Instalação geo ip
Instalação geo ipInstalação geo ip
Instalação geo ip
 
Making environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeMaking environment for_infrastructure_as_code
Making environment for_infrastructure_as_code
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with docker
 
Django deployment best practices
Django deployment best practicesDjango deployment best practices
Django deployment best practices
 
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffersHow%20to%20install%20PHP%20on%20Linux%20_%20laffers
How%20to%20install%20PHP%20on%20Linux%20_%20laffers
 
Fabric workshop(1) - (MOSG)
Fabric workshop(1) - (MOSG)Fabric workshop(1) - (MOSG)
Fabric workshop(1) - (MOSG)
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)
 
Releasing and deploying python tools
Releasing and deploying python toolsReleasing and deploying python tools
Releasing and deploying python tools
 
Docker perl build
Docker perl buildDocker perl build
Docker perl build
 
Scalable Systems Management with Puppet
Scalable Systems Management with PuppetScalable Systems Management with Puppet
Scalable Systems Management with Puppet
 
A Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficA Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web Traffic
 
hw1a
hw1ahw1a
hw1a
 
Augeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet treeAugeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet tree
 
[MeetUp][2nd] 컭on턺
[MeetUp][2nd] 컭on턺[MeetUp][2nd] 컭on턺
[MeetUp][2nd] 컭on턺
 
Practical introduction to dev ops with chef
Practical introduction to dev ops with chefPractical introduction to dev ops with chef
Practical introduction to dev ops with chef
 
Scripting Support in GFv3 Prelude - Full Version
Scripting Support in GFv3 Prelude - Full VersionScripting Support in GFv3 Prelude - Full Version
Scripting Support in GFv3 Prelude - Full Version
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
GlassFish v3 Update Center
GlassFish v3 Update CenterGlassFish v3 Update Center
GlassFish v3 Update Center
 

Andere mochten auch

Andere mochten auch (20)

We Buy Cheese in a Cheese Shop
We Buy Cheese in a Cheese ShopWe Buy Cheese in a Cheese Shop
We Buy Cheese in a Cheese Shop
 
Python, Development Environment for Windows
Python, Development Environment for WindowsPython, Development Environment for Windows
Python, Development Environment for Windows
 
Python Recipes for django girls seoul
Python Recipes for django girls seoulPython Recipes for django girls seoul
Python Recipes for django girls seoul
 
PythonBrasil[8] closing
PythonBrasil[8] closingPythonBrasil[8] closing
PythonBrasil[8] closing
 
2007 - 应用系统脆弱性概论
2007 - 应用系统脆弱性概论 2007 - 应用系统脆弱性概论
2007 - 应用系统脆弱性概论
 
PyClab.__init__(self)
PyClab.__init__(self)PyClab.__init__(self)
PyClab.__init__(self)
 
User-centered open source
User-centered open sourceUser-centered open source
User-centered open source
 
2016 py con2016_lightingtalk_php to python
2016 py con2016_lightingtalk_php to python2016 py con2016_lightingtalk_php to python
2016 py con2016_lightingtalk_php to python
 
Vim for Mere Mortals
Vim for Mere MortalsVim for Mere Mortals
Vim for Mere Mortals
 
The Django Book, Chapter 16: django.contrib
The Django Book, Chapter 16: django.contribThe Django Book, Chapter 16: django.contrib
The Django Book, Chapter 16: django.contrib
 
NoSql Day - Chiusura
NoSql Day - ChiusuraNoSql Day - Chiusura
NoSql Day - Chiusura
 
Django-Queryset
Django-QuerysetDjango-Queryset
Django-Queryset
 
Load testing
Load testingLoad testing
Load testing
 
EuroDjangoCon 2009 - Ein Rückblick
EuroDjangoCon 2009 - Ein RückblickEuroDjangoCon 2009 - Ein Rückblick
EuroDjangoCon 2009 - Ein Rückblick
 
Html5 History-API
Html5 History-APIHtml5 History-API
Html5 History-API
 
Bottle - Python Web Microframework
Bottle - Python Web MicroframeworkBottle - Python Web Microframework
Bottle - Python Web Microframework
 
The Django Book Chapter 9 - Django Workshop - Taipei.py
The Django Book Chapter 9 - Django Workshop - Taipei.pyThe Django Book Chapter 9 - Django Workshop - Taipei.py
The Django Book Chapter 9 - Django Workshop - Taipei.py
 
Website optimization
Website optimizationWebsite optimization
Website optimization
 
Super Advanced Python –act1
Super Advanced Python –act1Super Advanced Python –act1
Super Advanced Python –act1
 
NoSql Day - Apertura
NoSql Day - AperturaNoSql Day - Apertura
NoSql Day - Apertura
 

Ähnlich wie Arbeiten mit distribute, pip und virtualenv

5 minute intro to virtualenv
5 minute intro to virtualenv5 minute intro to virtualenv
5 minute intro to virtualenv
amenasse
 

Ähnlich wie Arbeiten mit distribute, pip und virtualenv (20)

Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
 
Virtualenv
VirtualenvVirtualenv
Virtualenv
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Docker for data science
Docker for data scienceDocker for data science
Docker for data science
 
Virtual Environment and Web development using Django
Virtual Environment and Web development using DjangoVirtual Environment and Web development using Django
Virtual Environment and Web development using Django
 
Python packaging and dependency resolution
Python packaging and dependency resolutionPython packaging and dependency resolution
Python packaging and dependency resolution
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Python+gradle
Python+gradlePython+gradle
Python+gradle
 
Rust & Python : Python WA October meetup
Rust & Python : Python WA October meetupRust & Python : Python WA October meetup
Rust & Python : Python WA October meetup
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops Team
 
Docker to the Rescue of an Ops Team
Docker to the Rescue of an Ops TeamDocker to the Rescue of an Ops Team
Docker to the Rescue of an Ops Team
 
Marek Kuziel - Deploying Django with Buildout
Marek Kuziel - Deploying Django with BuildoutMarek Kuziel - Deploying Django with Buildout
Marek Kuziel - Deploying Django with Buildout
 
5 minute intro to virtualenv
5 minute intro to virtualenv5 minute intro to virtualenv
5 minute intro to virtualenv
 
Maven
MavenMaven
Maven
 
First python project
First python projectFirst python project
First python project
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 

Mehr von Markus Zapke-Gründemann

Celery eine asynchrone task queue (nicht nur) für django
Celery   eine asynchrone task queue (nicht nur) für djangoCelery   eine asynchrone task queue (nicht nur) für django
Celery eine asynchrone task queue (nicht nur) für django
Markus Zapke-Gründemann
 

Mehr von Markus Zapke-Gründemann (10)

Writing multi-language documentation using Sphinx
Writing multi-language documentation using SphinxWriting multi-language documentation using Sphinx
Writing multi-language documentation using Sphinx
 
Sichere Web-Applikationen am Beispiel von Django
Sichere Web-Applikationen am Beispiel von DjangoSichere Web-Applikationen am Beispiel von Django
Sichere Web-Applikationen am Beispiel von Django
 
Virtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauenVirtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauen
 
Writing multi-language documentation using Sphinx
Writing multi-language documentation using SphinxWriting multi-language documentation using Sphinx
Writing multi-language documentation using Sphinx
 
Mercurial
MercurialMercurial
Mercurial
 
Celery eine asynchrone task queue (nicht nur) für django
Celery   eine asynchrone task queue (nicht nur) für djangoCelery   eine asynchrone task queue (nicht nur) für django
Celery eine asynchrone task queue (nicht nur) für django
 
Celery - eine asynchrone Task Queue (nicht nur) für Django
Celery - eine asynchrone Task Queue (nicht nur) für DjangoCelery - eine asynchrone Task Queue (nicht nur) für Django
Celery - eine asynchrone Task Queue (nicht nur) für Django
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesDjango - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlines
 
Bottle - Python Web Microframework (english)
Bottle - Python Web Microframework (english)Bottle - Python Web Microframework (english)
Bottle - Python Web Microframework (english)
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework  for perfectionists with deadlinesDjango - The Web framework  for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlines
 

Kürzlich hochgeladen

Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهله
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Navigating the Large Language Model choices_Ravi Daparthi
Navigating the Large Language Model choices_Ravi DaparthiNavigating the Large Language Model choices_Ravi Daparthi
Navigating the Large Language Model choices_Ravi Daparthi
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfFrisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 

Arbeiten mit distribute, pip und virtualenv

  • 1. Arbeiten mit distribute, pip und virtualenv Markus Zapke-Gründemann Leipzig Python User Group - 10.8.2010
  • 2. Überblick • Über mich • distribute • pip • modern-package-template • virtualenv • virtualenvwrapper
  • 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.
  • 6. 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é
  • 7. 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)
  • 8. 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
  • 9. pip
  • 10. 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
  • 11. 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...
  • 12. 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
  • 13. 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...
  • 14. 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...
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. pip completion $ pip completion --bash >> ~/.profile $ pip completion --zsh >> ~/.zprofile
  • 20. Design done by Idan Gazit (http://pixane.com) - License: cc-by-3.0
  • 22. modern-package-template • PasteScript Template • distribute • buildout • Autor: Sridhar Ratnakumar $ pip install modern-package-template
  • 23. 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
  • 24. 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/
  • 25. 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 ]
  • 26. 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'] } )
  • 28. virtualenv • Isolierte Python Umgebungen • Unterstützung für distribute • Kann mit WSGI Containern benutzt werden • Autor: Ian Bicking $ pip install virtualenv
  • 29. Isolierte Python Umgebungen • Python Version wählbar (Symlink) • Eigenes bin Verzeichnis • Eigenes site-packages Verzeichnis
  • 30. 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.
  • 31. virtualenv aktivieren und deaktivieren zappi ~/$ cd testenv zappi ~/testenv$ . bin/activate (testenv)zappi ~/testenv$ deactivate zappi ~/testenv$
  • 33. 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
  • 34. 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 ~$
  • 35. 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 ~$
  • 37. 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
  • 38. 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
  • 39. 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
  • 41. workon zappi ~$ workon testenv (testenv)zappi ~$
  • 42. 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
  • 43. 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
  • 44. 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
  • 45. 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.