Je voudrais avoir un PYTHONPATH différent de mon habituel dans un virtualenv particulier. Comment puis-je configurer cela automatiquement? Je me rends compte qu'il est possible de pirater le fichier bin/activate
, y at-il un meilleur/plus moyen standard?Puis-je changer automatiquement mon PYTHONPATH lors de l'activation/désactivation d'un virtualenv?
Q
Puis-je changer automatiquement mon PYTHONPATH lors de l'activation/désactivation d'un virtualenv?
13
A
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à!
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
- 1. Problèmes lors de l'utilisation de nose dans un fichier virtualenv
- 2. Buildout et Virtualenv
- 3. Pour comprendre Typeset pour PythonPath
- 4. Définir PYTHONPATH dans Emacs sur MacOS?
- 5. Utiliser virtualenv sous Mac OS X
- 6. Pour obtenir PYTHONPATH correct dans la gestion de Django
- 7. Comment empêcher Emacs de modifier automatiquement mon fichier de démarrage?
- 8. NHibernate définir automatiquement les propriétés lors de la sauvegarde
- 9. jQuery lightbox plugin changer l'apperance de mon site wordpress
- 10. Puis-je changer le titre de mon dossier FolderBrowserDialog?
- 11. Pourquoi le premier bouton de la barre d'outils est-il automatiquement sélectionné lors du chargement de mon application gtk?
- 12. Reporting Services défile automatiquement vers une ancre lors de l'expansion
- 13. Ne pas toucher mon shebang
- 14. Couverture ne montrant pas les lignes exécutées dans virtualenv
- 15. à l'étape automatiquement dans le serveur lors du débogage WCF
- 16. Obtention de "select permission denied" lors de l'utilisation de LINQ mais mon compte est un sysadmin
- 17. Comment ouvrir les fichiers automatiquement lors du démarrage d'emacs?
- 18. Appeler automatiquement le clavier numérique lors de l'édition de la zone de texte (.NET CF)
- 19. Puis-je incrémenter automatiquement la version de génération de fichier lors de l'utilisation de Visual Studio?
- 20. Impossible de trouver mon cookie lors de la connexion
- 21. Mon redéploiement Tomcat échoue lors de l'utilisation de Teamcity
- 22. Erreur lors de la mise à niveau de mon produit
- 23. Comment compiler les extensions Python C en utilisant MinGW dans un virtualenv?
- 24. ASP.NET MVC: Comment puis-je obtenir mon objet réel lors de l'utilisation de mon action Modifier?
- 25. Ajouter automatiquement des propriétés lors de l'exécution de JUnit dans Eclipse
- 26. Est-ce que Eclipse CDT peut se compléter automatiquement lors de l'utilisation de typedefs?
- 27. Erreur lors de l'utilisation href lien dans mon ContentPlaceHolder
- 28. Mantis: Que dois-je changer pour afficher automatiquement les images jointes lorsque je vois des problèmes?
- 29. Un programme pour changer mon code C/GTK + afin de me conformer aux standards de GEdit
- 30. Comment changer de classe de textbox?
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
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. –