A virtualenvwrapper hookokról

A virtualenvwrapper a virtualenvhez készített kiegészítő. Míg virtualenvvel „csak” le- és felcsatolhatjuk a választott fejlesztői környezetet, addig a virtualenvwrapper többek között hookok definiálását is lehetővé teszi. A virtuális munka környezet bin/ mappájában található preactivate, postactivate, predeactivate és postdeactivate shell scriptekkel akaszkodhatunk rá a környezetváltás folyamatára.

Django alapú fejlesztésnél például kimondottan kényelmes, ha a virtuális munka környezet aktiválásakor egyúttal egy-némely shell változó is értéket kap. Ehhez a $VIRTUAL_ENV/bin/postactivate hookba a következőket szúrtam:

export PYTHONPATH=$PYTHONPATH:/Users/admin/Sites/djangosite
export DJANGO_SETTINGS_MODULE=djangosite.settings

Innentől kezdve a workon project_env hatására megfelelően kitöltött PYTHONPATH és DJANGO_SETTINGS_MODULE fogad. A hook scripteket közvetlenül a parancsértelmező dolgozza fel, így bármire rávehetjük, amit a shell elbír. Matt Wilson példának okáért egész komolyan kimunkált környezetet kap.

A virtualenvwrapper használatáról Richard Leland rögzített screencastot. Az izolált fejlesztői környezettekkel most ismerkedőknek a Fejlesztői környezet kialakítása Python alapú fejlesztéshez című összefoglalót ajánlom.

17szept.

2 Comment for A virtualenvwrapper hookokról

  1. RePa says:

    En zsh-t hasznalok, es varazslatos a promptom, a kornyezet beallitasakor ele kerulne a (valami) szoveg, ami osszekuszalja a dolgokat, viszont apro trukkel megoldhato, hogy ez ne oda, hanem a prompt jobb oldalara keruljon:

    $WORKON_HOME/postactivate

    #!/bin/sh
    PS1="$_OLD_VIRTUAL_PS1"
    _OLD_RPROMPT="$RPROMPT"
    RPROMPT="$PR_BOLD$PR_YELLOW($PR_GREEN`basename $VIRTUAL_ENV`$PR_YELLOW)$PR_NO_COLOUR$RPROMPT"
    

    $WORKON_HOME/postdeactivate

    #!/bin/sh
    RPROMPT="$_OLD_RPROMPT"
    

    Igy nez ki amugy:

    http://static.django.hu/prompt.png
  2. RePa says:

    Egy dolog, amire most jottem ra, es hogy ne felejtsem el felirom ide: ha a virtualenv kornyezet letrehozasa utan szeretnenk szabalyozni a globalis site-packages hasznalatat, akkor egyszeruen hozzuk letre/toroljuk a $WORKON_HOME/lib/python2.?/ konyvtarban a no-global-site-packages.txt nevu filet.

Szólj hozzá