Tengo un problema de que Jupyter no puede ver la variable env en el archivo bashrc, ¿hay alguna manera de cargar estas variables en jupyter o agregarle una variable personalizada?
python
bash
environment-variables
jupyter-notebook
Ehab AlBadawy
fuente
fuente
os.environ[var] = val
en el backend: github.com/ipython/ipython/blob/master/IPython/core/magics/…También puede configurar las variables en su
kernel.json
archivo:Mi solución es útil si necesita las mismas variables de entorno cada vez que inicia un kernel de jupyter, especialmente si tiene varios conjuntos de variables de entorno para diferentes tareas.
Para crear un nuevo kernel de ipython con sus variables de entorno, haga lo siguiente:
jupyter kernelspec list
para ver una lista con los núcleos instalados y dónde se almacenan los archivos.python2
) a un nuevo directorio (por ejemplopython2_myENV
).display_name
en el nuevokernel.json
archivo.env
diccionario que defina las variables de entorno.Su kernel json podría verse así (no modifiqué nada del kernel.json instalado excepto
display_name
yenv
):{ "display_name": "Python 2 with environment", "language": "python", "argv": [ "/usr/bin/python2", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "env": {"LD_LIBRARY_PATH":""} }
Casos de uso y ventajas de este enfoque
LD_LIBRARY_PATH
que afecta cómo se cargan los módulos compilados (por ejemplo, escritos en C). Establecer esta variable usando%set_env
no funcionó.fuente
C:\Program Files (x86)\Graphviz2.38\bin\dot.exe
a la ruta del sistema existente utilizando la técnica sugerida? ¿Funcionará si no estoy usando una cuenta de administrador? Estoy usando Windows 10.sys.executable
menos quePYTHONEXECUTABLE
se configure de antemano, que debe configurar antes de que se ejecute Python.Si está utilizando Python, puede definir sus variables de entorno en un
.env
archivo y cargarlas desde un cuaderno de Jupyter usando python-dotenv .Instale python-dotenv:
Cargue el
.env
archivo en un cuaderno de Jupyter:fuente
Puede configurar variables de entorno en su código de la siguiente manera:
import sys,os,os.path sys.path.append(os.path.expanduser('~/code/eol_hsrl_python')) os.environ['HSRL_INSTRUMENT']='gvhsrl' os.environ['HSRL_CONFIG']=os.path.expanduser('~/hsrl_config')
Esto, por supuesto, es una solución temporal, para obtener una permanente, probablemente necesite exportar las variables a su
~.profile
, se puede encontrar más información aquífuente
%env MY_VAR=MY_VALUE
debería ser la respuesta correcta a esta preguntaSi necesita la variable de set antes de que esté comenzando el bloc de notas, la única solución que funcionó para mí fue
env VARIABLE=$VARIABLE jupyter notebook
conexport VARIABLE=value
en.bashrc
.En mi caso, tensorflow necesita la variable exportada para importarla con éxito en un cuaderno.
fuente
Un problema con el que me encontré: los siguientes dos comandos son equivalentes. Tenga en cuenta que el primero no puede usar comillas. Algo contrario a la intuición, citar la cadena cuando se usa
%env VAR ...
dará como resultado que las comillas se incluyan como parte del valor de la variable, que probablemente no sea lo que desea.%env MYPATH=C:/Folder Name/file.txt
y
import os os.environ['MYPATH'] = "C:/Folder Name/file.txt"
fuente
Si está utilizando systemd, acabo de descubrir que parece que tiene que agregarlos al archivo de unidad systemd. Esto en Ubuntu 16. Ponerlos en .profile y .bashrc (incluso en / etc / profile) resultó en que las Vars ENV no estuvieran disponibles en los cuadernos juypter.
Tuve que editar:
/lib/systemd/system/jupyer-notebook.service
y poner la variable que quería leer en el archivo de la unidad como:
Environment=MYOWN_VAR=theVar
y solo entonces pude leerlo desde dentro de mi cuaderno.
fuente
Una solución relacionada (a corto plazo) es almacenar sus variables de entorno en un solo archivo, con un formato predecible, que se puede obtener al iniciar una terminal y / o leer en el cuaderno. Por ejemplo, tengo un archivo,
.env
que tiene mis definiciones de variables de entorno en el formatoVARIABLE_NAME=VARIABLE_VALUE
(sin líneas en blanco ni espacios adicionales). Puede obtener este archivo en los archivos.bashrc
o.bash_profile
al comenzar una nueva sesión de terminal y puede leerlo en un cuaderno con algo como,import os env_vars = !cat ../script/.env for var in env_vars: key, value = var.split('=') os.environ[key] = value
Utilicé una ruta relativa para mostrar que este
.env
archivo puede vivir en cualquier lugar y ser referenciado en relación con el directorio que contiene el archivo del cuaderno. Esto también tiene la ventaja de no mostrar los valores de las variables dentro de su código en ninguna parte.fuente