2009-06-09 1 views

Répondre

19

Cette django-users post va probablement vous aider beaucoup. Il suggère d'utiliser virtualenvwrapper pour envelopper virtualenv, pour utiliser la commande add2virtualenv. L'utilisation de ce, lorsque l'environnement est actif, vous pouvez simplement appeler:

add2virtualenv directory1 directory2 ... 

pour ajouter les répertoires à votre PYTHONPATH pour l'environnement actuel.

Il gère de façon autonome les changements PATH sur les commutateurs d'environnement. Aucune magie noire requise. Et voilà!

+0

J'essaie cela maintenant, et je l'accepterai probablement dans quelques jours s'il n'y a toujours pas d'autres solutions qui ne dépendent pas de paquets supplémentaires. – saffsd

+4

Cela vaut la peine de noter que vous pouvez automatiser cela en modifiant le script 'postactivate' dans votre dossier de projet virtualenvwrapper. Par défaut, cela se trouve dans '~/.virtualenvs/myproject/bin/postactivate' où" myproject "est le nom de votre env virtuel. –

2

Voici la version piratée de bin/activate pour référence. Il définit correctement le PYTHONPATH, mais l'effacement ne fonctionne pas.


# 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 
Questions connexes