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?

17
demandé sur Ehab AlBadawy 2016-06-18 00:53:15

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

24
répondu michael 2017-05-30 00:09:04

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

13
répondu kardaj 2016-06-17 22:16:28

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
1
répondu Andy D 2017-04-04 20:42:24

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 notebookexport VARIABLE=value.bashrc.

dans mon cas tensorflow a besoin de la variable exportée pour réussir à l'importer dans un notebook.

1
répondu Baschdl 2017-11-16 09:43:07

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ù.

0
répondu wingr 2018-03-27 01:52:39

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"
0
répondu evan_b 2018-06-22 20:13:39