2009-06-09 10 views

risposta

19

Questo django-users post probabilmente ti aiuterà molto. Suggerisce di utilizzare virtualenvwrapper per eseguire il wrapping di virtualenv, per utilizzare il comando add2virtualenv. Usando questo, quando l'ambiente è attiva, si può chiamare:

add2virtualenv directory1 directory2 ... 

per aggiungere le directory al vostro PYTHONPATH per l'ambiente corrente.

Gestisce autonomamente le modifiche PATH sugli switch di ambiente. Non è richiesta alcuna magia nera. Et voilà!

+0

Ora ci sto provando e probabilmente accetterò tra un paio di giorni se non ci sono altre soluzioni che non dipendono da pacchetti aggiuntivi. – saffsd

+4

Vale la pena notare che è possibile automatizzarlo modificando lo script 'postactivate' nella cartella del progetto virtualenvwrapper. Di default questo si trova in '~/.virtualenvs/myproject/bin/postactivate' dove" myproject "è il nome del tuo ambiente virtuale. –

2

Questa è la versione compromessa di bin/activate come riferimento. Imposta correttamente PYTHONPATH, ma la disattivazione non funziona.


# This file must be used with "source bin/activate" *from bash* 
# you cannot run it directly 

deactivate() { 
    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then 
     PATH="$_OLD_VIRTUAL_PATH" 
     export PATH 
     unset _OLD_VIRTUAL_PATH 
    fi 

    # This should detect bash and zsh, which have a hash command that must 
    # be called to get it to forget past commands. Without forgetting 
    # past commands the $PATH changes we made may not be respected 
    if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then 
     hash -r 
    fi 

    if [ -n "$_OLD_VIRTUAL_PS1" ] ; then 
     PS1="$_OLD_VIRTUAL_PS1" 
     export PS1 
     unset _OLD_VIRTUAL_PS1 
    fi 

    if [ -n "$_OLD_PYTHONPATH" ] ; then 
     PYTHONPATH="$_OLD_PYTHONPATH" 
     export PYTHONPATH 
     unset _OLD_PYTHONPATH 
    fi 

    unset VIRTUAL_ENV 
    if [ ! "$1" = "nondestructive" ] ; then 
    # Self destruct! 
     unset deactivate 
    fi 
} 

# unset irrelavent variables 
deactivate nondestructive 
VIRTUAL_ENV="env_location" # Anonymized 
export VIRTUAL_ENV 

_OLD_VIRTUAL_PATH="$PATH" 
PATH="$VIRTUAL_ENV/bin:$PATH" 
export PATH 

_OLD_VIRTUAL_PS1="$PS1" 
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then 
    # special case for Aspen magic directories 
    # see http://www.zetadev.com/software/aspen/ 
    PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" 
else 
    PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" 
fi 
export PS1 

# This should detect bash and zsh, which have a hash command that must 
# be called to get it to forget past commands. Without forgetting 
# past commands the $PATH changes we made may not be respected 
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then 
    hash -r 
fi 

_OLD_PYTHONPATH="$PYTHONPATH" 
PYTHONPATH="new_pythonpath" #Anonymized 
export PYTHONPATH 
Problemi correlati