Tengo un proyecto Heroku que usa variables de entorno para obtener su configuración, pero primero uso virtualenv para probar mi aplicación localmente.
¿Hay alguna manera de establecer las variables de entorno definidas en la máquina remota dentro de virtualenv?
python
heroku
environment-variables
virtualenv
Mahmoud Hanafy
fuente
fuente
.env
archivos bork construyen Heroku, al menos en mi experiencia. Así que no lo incluyas en tu repositorio. Usuario de mucho tiempo / gran fan de autoenv por cierto. Hola Kenneth, hombre.En caso de que esté usando virtualenvwrapper (le recomiendo hacerlo), puede definir diferentes ganchos (preactivar, postactivar, predeactivar, posdeactivar) usando los scripts con los mismos nombres
$VIRTUAL_ENV/bin/
. Necesita el gancho postactivate.Si desea mantener esta configuración en el directorio de su proyecto, simplemente cree un enlace simbólico desde su directorio de proyecto
$VIRTUAL_ENV/bin/postactivate
.Incluso podría automatizar la creación de los enlaces simbólicos cada vez que use mkvirtualenv .
Limpieza al desactivar
Recuerde que esto no se limpiará después de sí mismo. Cuando desactive virtualenv, la variable de entorno persistirá. Para limpiar simétricamente puede agregar a
$VIRTUAL_ENV/bin/predeactivate
.Recuerde que si usa esto para las variables de entorno que ya podrían estar configuradas en su entorno, entonces el desarmado resultará en que estén completamente desarmadas al abandonar virtualenv. Entonces, si eso es probable, podría registrar el valor anterior en algún lugar temporal y luego volver a leerlo en desactivar.
Preparar:
Prueba:
fuente
ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
no funcionó para mí.ln
quiere un camino completo, así que tuve que hacerloln -s `pwd`/.env/postactivate $VIRTUAL_ENV/bin/postactivate
ln
.ln
le gustan los caminos completos, así que lo intenté y funcionó. Cuando intentécat
el enlace simbólico con la ruta relativa, decíaNo such file or directory
.Tu podrías intentar:
en virtualenv_root / bin / generate. Básicamente, el script de activación es lo que se ejecuta cuando comienza a usar virtualenv para que pueda poner toda su personalización allí.
fuente
deactivate
función definida virtualenv_root / bin / activar para equilibrar la configuración y la desarmadoUsando solo virtualenv (sin virtualenvwrapper ), configurar las variables de entorno es fácil a través del
activate
script que busca para activar virtualenv.Correr:
Agregue las variables de entorno al final del archivo de esta manera:
También puede establecer un enlace similar para desarmar la variable de entorno como lo sugiere Danilo Bargen en su gran respuesta anterior si es necesario.
fuente
cd
solo para tener variables de entorno? estremecimientoSi bien hay muchas buenas respuestas aquí, no vi una solución publicada que incluya variables de entorno desestabilizadoras en la desactivación y no requiera bibliotecas adicionales más allá
virtualenv
, así que aquí está mi solución que solo implica editar / bin / activar, usando el variablesMY_SERVER_NAME
yMY_DATABASE_URL
como ejemplos:Debe haber una definición para desactivar en el script de activación, y desea desarmar sus variables al final:
Luego, al final del script de activación, configure las variables:
De esta manera, no tiene que instalar nada más para que funcione, y no termina con las variables que quedan cuando
deactivate
virtualenv.fuente
Localmente dentro de un virtualenv hay dos métodos que podría usar para probar esto. La primera es una herramienta que se instala a través del cinturón de herramientas de Heroku (https://toolbelt.heroku.com/). La herramienta es capataz. Exportará todas las variables de entorno que están almacenadas en un archivo .env localmente y luego ejecutará los procesos de la aplicación dentro de su Procfile.
La segunda forma si está buscando un enfoque más ligero es tener un archivo .env localmente y luego ejecutar:
fuente
Instalar autoenv ya sea por
(o)
Y luego cree el
.env
archivo en su carpeta de proyecto virtualenvAhora todo funciona bien.
fuente
Si ya está usando Heroku, considere ejecutar su servidor a través de Foreman . Es compatible con un
.env
archivo que es simplemente una lista de líneas con lasKEY=VAL
que se exportará a su aplicación antes de que se ejecute.fuente
Otra forma de hacerlo que está diseñada para django, pero que debería funcionar en la mayoría de las configuraciones, es usar django-dotenv.
fuente
Para activar virtualenv en
env
directorio y exportar variables de entorno almacenadas en.env
uso:fuente
echo 'alias e=". env/bin/activate && set -a; source .env; set +a"' >> ~/.bash_aliases