J'ai un problème que Jupyter ne peut pas voir la variable env dans le fichier bashrc, existe-t-il un moyen de charger ces variables dans jupyter ou d'y ajouter une variable custome?
python
bash
environment-variables
jupyter-notebook
Ehab AlBadawy
la source
la source
os.environ[var] = val
sur le backend: github.com/ipython/ipython/blob/master/IPython/core/magics/…Vous pouvez également définir les variables dans votre
kernel.json
fichier:Ma solution est utile si vous avez besoin des mêmes variables d'environnement chaque fois que vous démarrez un noyau jupyter, surtout si vous avez plusieurs ensembles de variables d'environnement pour différentes tâches.
Pour créer un nouveau noyau ipython avec vos variables d'environnement, procédez comme suit:
jupyter kernelspec list
pour voir une liste avec les noyaux installés et où les fichiers sont stockés.python2
) dans un nouveau répertoire (par exemplepython2_myENV
).display_name
dans le nouveaukernel.json
fichier.env
dictionnaire définissant les variables d'environnement.Votre noyau json pourrait ressembler à ceci (je n'ai rien modifié du kernel.json installé sauf
display_name
etenv
):{ "display_name": "Python 2 with environment", "language": "python", "argv": [ "/usr/bin/python2", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "env": {"LD_LIBRARY_PATH":""} }
Cas d'utilisation et avantages de cette approche
LD_LIBRARY_PATH
qui affecte la façon dont les modules compilés (par exemple écrits en C) sont chargés. Définition de cette variable à l'aide de%set_env
n'a pas fonctionné.la source
C:\Program Files (x86)\Graphviz2.38\bin\dot.exe
au chemin système existant en utilisant la technique que vous suggérez? Cela fonctionnera-t-il si je n'utilise pas de compte administrateur? J'utilise Windows 10.sys.executable
moins qu'il nePYTHONEXECUTABLE
soit défini au préalable, ce que vous devez définir avant l'exécution de python.Si vous utilisez Python, vous pouvez définir vos variables d'environnement dans un
.env
fichier et les charger à partir d'un notebook Jupyter à l'aide de python-dotenv .Installez python-dotenv:
Chargez le
.env
fichier dans un notebook Jupyter:la source
Vous pouvez configurer les 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 est bien sûr un correctif temporaire, pour en obtenir un permanent, vous devez probablement exporter les variables dans votre
~.profile
, plus d'informations peuvent être trouvées icila source
%env MY_VAR=MY_VALUE
devrait être la bonne réponse à cette questionSi vous avez besoin du jeu de variables avant de démarrer le notebook, la seule solution qui a fonctionné pour moi était
env VARIABLE=$VARIABLE jupyter notebook
avecexport VARIABLE=value
in.bashrc
.Dans mon cas, tensorflow a besoin de la variable exportée pour réussir son importation dans un cahier.
la source
Un piège que j'ai rencontré: les deux commandes suivantes sont équivalentes. Notez que le premier ne peut pas utiliser de guillemets. De manière quelque peu contre-intuitive, le fait de citer la chaîne lors de l'utilisation
%env VAR ...
entraînera l'inclusion des guillemets 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"
la source
Si vous utilisez systemd, je viens de découvrir que vous semblez devoir les ajouter au fichier d'unité systemd. Ceci sur Ubuntu 16. Les placer dans le .profile et .bashrc (même le / etc / profile) a eu pour conséquence que l'ENV Vars n'était pas disponible dans les blocs-notes de juypter.
J'ai dû éditer:
/lib/systemd/system/jupyer-notebook.service
et mettez la variable que je voulais lire dans le fichier d'unité comme:
Environment=MYOWN_VAR=theVar
et alors seulement pourrais-je le lire à partir du cahier juypter.
la source
Une solution connexe (à court terme) consiste à stocker vos variables d'environnement dans un seul fichier, avec un format prévisible, qui peut être obtenu lors du démarrage d'un terminal et / ou lu dans le notebook. Par exemple, j'ai un fichier,,
.env
qui a mes définitions de variable d'environnement au formatVARIABLE_NAME=VARIABLE_VALUE
(pas de lignes vides ni d'espaces supplémentaires). Vous pouvez générer ce fichier dans les fichiers.bashrc
ou.bash_profile
lorsque vous démarrez une nouvelle session de terminal et vous pouvez le lire dans un cahier 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 ce
.env
fichier peut 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 de variable dans votre code n'importe où.la source