Comment définir la variable env dans le carnet de notes de Jupyter
J'ai un problème que Jupyter ne peut pas voir la variable env dans le fichier bashrc, y a-t-il un moyen de charger ces variables dans jupyter ou d'y ajouter la variable custome?
6 réponses
pour définir une variable env dans un carnet jupyter, utilisez un %
commandes magiques, soit %env
ou %set_env
, e.g.,%env MY_VAR=MY_VALUE
ou %env MY_VAR MY_VALUE
. (Utiliser %env
par lui-même pour imprimer les variables d'environnement.)
Voir: http://ipython.readthedocs.io/en/stable/interactive/magics.html
vous pouvez configurer des variables d'environnement dans votre code comme suit:
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')
ceci si bien sûr un correctif temporaire, pour obtenir un permanent, vous devez probablement exporter les variables dans votre ~.profile
plus d'informations peuvent être trouvées ici
si vous utilisez systemd je viens de découvrir que vous semblez avoir à les ajouter au fichier unité systemd. C'est sur Ubuntu 16. Les mettre dans le .profil et .le bashrc (même le profil/etc/) a fait en sorte que les Env N'étaient pas disponibles dans les notebooks juypter.
j'ai eu à modifier:
/lib/systemd/system/jupyer-notebook.service
et le mettre dans la variable que j'ai voulu lire dans le fichier unité de la forme:
Environment=MYOWN_VAR=theVar
si vous avez besoin du jeu de variables avant de démarrer le carnet, la seule solution qui a fonctionné pour moi était env VARIABLE=$VARIABLE jupyter notebook
export VARIABLE=value
.bashrc
.
dans mon cas tensorflow a besoin de la variable exportée pour réussir à l'importer dans un notebook.
une solution connexe (à court terme) est de stocker vos variables d'environnement dans un seul fichier, avec un format prévisible, qui peut être trouvé lors du démarrage d'un terminal et/ou lu dans le bloc-notes. Par exemple, j'ai un fichier, .env
, qui a ma variable d'environnement définitions dans le format VARIABLE_NAME=VARIABLE_VALUE
(pas de lignes vides ou d'espaces supplémentaires). Vous pouvez trouver ce fichier dans le .bashrc
ou .bash_profile
les fichiers au début d'une nouvelle session de terminal et vous pouvez le lire dans un carnet avec quelque chose comme,
import os
env_vars = !cat ../script/.env
for var in env_vars:
key, value = var.split('=')
os.environ[key] = value
j'ai utilisé un chemin relatif pour montrer que ceci .env
fichier peuvent vivre n'importe où et être référencé par rapport au répertoire contenant le fichier notebook. Cela a également l'avantage de ne pas afficher les valeurs variables dans votre code n'importe où.
un gotcha que j'ai rencontré: les deux commandes suivantes sont équivalentes. Remarque la première ne peut pas utilisez des guillemets. Un peu contre-intuitivement, en citant la chaîne quand on utilise %env VAR ...
aboutira à ce que les guillemets soient inclus dans la valeur de la variable, ce qui n'est probablement pas ce que vous voulez.
%env MYPATH=C:/Folder Name/file.txt
et
import os
os.environ['MYPATH'] = "C:/Folder Name/file.txt"