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

.envarchivos 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/postactivateno funcionó para mí.lnquiere un camino completo, así que tuve que hacerloln -s `pwd`/.env/postactivate $VIRTUAL_ENV/bin/postactivateln.lnle gustan los caminos completos, así que lo intenté y funcionó. Cuando intentécatel 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
deactivatefunció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
activatescript 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
cdsolo 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_NAMEyMY_DATABASE_URLcomo 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
deactivatevirtualenv.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
.envarchivo 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
.envarchivo que es simplemente una lista de líneas con lasKEY=VALque 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
envdirectorio y exportar variables de entorno almacenadas en.envuso:fuente
echo 'alias e=". env/bin/activate && set -a; source .env; set +a"' >> ~/.bash_aliases