Me gustaría tener una PYTHONPATH diferente de la mía habitual en un virtualenv en particular. ¿Cómo configuro esto automáticamente? Me doy cuenta de que es posible hackear el archivo bin/activate
, ¿hay una forma mejor/más estándar?¿Puedo cambiar automáticamente mi PYTHONPATH al activar/desactivar un virtualenv?
13
A
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!
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
- 1. Cómo agrego una ruta a PYTHONPATH en virtualenv
- 2. Configuración de PYTHONPATH y PYTHONHOME
- 3. ¿Cómo puedo hacer que apt-get install a mi virtualenv?
- 4. PYTHONPATH ignorado
- 5. Sublime Text 2 & PYTHONPATH
- 6. ¿Cómo cambiar automáticamente el diseño del teclado al cambiar al modo normal de vim?
- 7. ¿Cómo puedo actualizar automáticamente el Javadoc al cambiar la firma del método en Eclipse?
- 8. ¿Cómo puedo cargar alias automáticamente al inicio?
- 9. PYTHONPATH vs. sys.path
- 10. ¿Puedo cambiar el título de mi FolderBrowserDialog?
- 11. PYTHONPATH temporal en Windows
- 12. ¿Puedo cambiar el alias de mi clave?
- 13. ¿Puedo cambiar default_socket_timeout desde mi código php?
- 14. Agregue permanentemente un directorio a PYTHONPATH
- 15. ¿Cómo elimino/elimino un virtualenv?
- 16. ¿Mi entorno virtual (python) está causando que mi PYTHONPATH se rompa?
- 17. ¿Cómo agregar algo a PYTHONPATH?
- 18. cacao cambiar un foco de mi solicitud
- 19. Virtualenv no creando un entorno
- 20. ¿Cómo puedo establecer correctamente DJANGO_SETTINGS_MODULE para mi proyecto Django (estoy usando virtualenv)?
- 21. Establecer PYTHONPATH en Emacs en MacOS?
- 22. Cambiar automáticamente de público a privado (Java)
- 23. En mi virtualenv, necesito usar sudo para todos los comandos
- 24. Duplicate virtualenv
- 25. ¿Qué debería establecerse exactamente en PYTHONPATH?
- 26. ¿Cómo puedo detectar automáticamente un proxy?
- 27. ¿Tiene php un equivalente al virtualenv de python o al sandbox de ruby?
- 28. ¿Cómo puedo cambiar los colores de mi gráfico circular Highcharts?
- 29. ¿Cómo puedo cambiar el idioma de mi solicitud
- 30. ¿Cómo agrego un directorio con dos puntos a PYTHONPATH?
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
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. –