2009-06-09 18 views

Respuesta

19

Probablemente te va a ayudar un django-users post. Sugiere usar virtualenvwrapper para envolver virtualenv, para usar el comando add2virtualenv. El uso de este, cuando el ambiente está activa, sólo puede llamar a:

add2virtualenv directory1 directory2 ... 

para añadir los directorios a su PYTHONPATH para el entorno actual.

Maneja de forma autónoma los cambios de RUTA en los interruptores de entorno. No se requiere magia negra. Et voila!

+0

Estoy probando esto ahora, y probablemente lo acepte en un par de días si todavía no hay otras soluciones que no dependan de paquetes adicionales. – saffsd

+4

Vale la pena señalar que puede automatizar esto editando el script 'postactivate' en su carpeta de proyecto virtualenvwrapper. Por defecto, esto se encuentra en '~/.virtualenvs/myproject/bin/postactivate' donde" myproject "es el nombre de su env virtual. –

2

Aquí está la versión pirateada de bin/activate de referencia. Establece PYTHONPATH correctamente, pero no funciona.


# 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 
Cuestiones relacionadas