= pip, virtualenv & virtualenvwrapper = == site-packages == Packages, die nicht zur [[http://docs.python.org/library/|Standard-Library]] gehören, werden ins `site-packages`-Verzeichnis installiert. * /Library/Python/2.7/site-packages (Mac) * /usr/local/lib/python2.7/site-packages (Debian) Der Suchpfad kann außerdem noch beeinflußt werden durch: * $PYTHONPATH * *.pth == distutils / setuptools / distribute == * `distutils` ist der ungeliebte Default-Installer aus der Standard-Lib * `setuptools` monkey patches `distutils` * `distribute` ist ein fork von `setuptools` ← this is what you want! Die Installations-Pfade für Packages und Binaries lassen sich hier konfigurieren (Beispiel für Mac, Linux-Varianten analog, ''wenn notwendig''): `/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/distutils.cfg` {{{ [install] install_lib = /Library/Python/2.7/site-packages/ install_scripts = /usr/local/stow/python2.7/bin/ install_data = /usr/local/stow/python2.7/ }}} Alle folgenden Tools haben gute und prägnante Doku auf der jeweiligen Homepage. == pip == `pip` läßt sich per `easy_install` installieren {{{ # easy_install distribute # easy_install pip }}} oder per der Anleitung von http://pip-installer.org . Ab dann ist `easy_install` nicht mehr notwendig. * `pip install plist` (installiert automatisch von http://pypi.python.org/ ) * `pip install hg+ssh://hg@bitbucket.org/hopthrisC/plist#egg=plist` * `pip install -e hg+ssh://hg@bitbucket.org/hopthrisC/plist#egg=plist` * `pip uninstall plist` * `pip freeze > requirements.txt` * `pip install -r requirements.txt` == virtualenv == [[http://www.virtualenv.org|virtualenv]] baut ein abgeschlossenes System von Python-Interpreter, Standard-Lib und Packages, daß vollkommen unabhängig vom restlichen System funktioniert. {{{ $ virtualenv ENV $ source ENV/bin/activate (ENV)$ python >>> import sys; print sys.prefix '/Users/foo/ENV/bin/..' (ENV)$ pip install foo $ deactivate }}} Zwei nützliche Umgebungsvariablen sind: {{{ export PIP_REQUIRE_VIRTUALENV=true export VIRTUALENV_USE_DISTRIBUTE=true }}} Man kann die Virtuelle Umgebung auch nutzen, indem man direkt den Python-Interpreter aufruft. {{{ $ ENV/bin/python >>> import sys; print sys.prefix '/Users/foo/ENV/bin/..' }}} == virtualenvwrapper == Dieses Tool erweitert `virtualenv` um einige nützliche Voreinstellungen und Kommandos. * http://www.doughellmann.com/projects/virtualenvwrapper/ Konfiguration: {{{ export PROJECT_HOME=~/Projects export WORKON_HOME=~/.virtualenvs }}} Die [[http://www.doughellmann.com/docs/virtualenvwrapper/command_ref.html|Doku]] hat eine kompakte Übersicht der verfügbaren Befehle. `workon` hat Tab-Completion! == misc == * http://tox.readthedocs.org * http://www.python.org/dev/peps/pep-0405/ == Quellen == * [[https://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-reverse-engineering-ian-bicking-s-brain-inside-pip-and-virtualenv-4899496|Reverse Engineering Ian Bicking]] * http://import-this.de/episode/virtualenv/ * http://exyr.org/2011/virtualenv-HOWTO/