У мене проблема, що Jupyter не бачить змінну env у файлі bashrc, чи є спосіб завантажити ці змінні в jupyter або додати до нього змінну customome?
У мене проблема, що Jupyter не бачить змінну env у файлі bashrc, чи є спосіб завантажити ці змінні в jupyter або додати до нього змінну customome?
Відповіді:
Щоб встановити змінну env у блокноті jupyter, просто використовуйте %
магічні команди, %env
або %set_env
, наприклад, %env MY_VAR=MY_VALUE
або %env MY_VAR MY_VALUE
. (Використовуйте %env
сам для друку поточних змінних середовища.)
Див .: http://ipython.readthedocs.io/en/stable/interactive/magics.html
os.environ[var] = val
на сервері: github.com/ipython/ipython/blob/master/IPython/core/magics/…
kernel.json
файлі:Моє рішення корисне, якщо вам потрібні однакові змінні середовища кожного разу, коли ви запускаєте ядро jupyter, особливо якщо у вас є кілька наборів змінних середовища для різних завдань.
Щоб створити нове ядро ipython із змінними середовища, виконайте наступне:
jupyter kernelspec list
щоб переглянути список із встановленими ядрами та де зберігаються файли.python2
), до нового каталогу (наприклад python2_myENV
).display_name
у новому kernel.json
файлі.env
словник, що визначає змінні середовища.Ваше ядро json може виглядати так (я нічого не модифікував з встановленого kernel.json, крім display_name
і env
):
{
"display_name": "Python 2 with environment",
"language": "python",
"argv": [
"/usr/bin/python2",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"env": {"LD_LIBRARY_PATH":""}
}
LD_LIBRARY_PATH
яка впливає на те, як завантажуються скомпільовані модулі (наприклад, написані на C). Встановлення цієї змінної за допомогою %set_env
не спрацювало.C:\Program Files (x86)\Graphviz2.38\bin\dot.exe
до існуючого системного шляху за допомогою запропонованої вами техніки? Чи буде це працювати, якщо я не використовую обліковий запис адміністратора? Я використовую Windows 10.
sys.executable
якщо PYTHONEXECUTABLE
не встановлено заздалегідь, що потрібно встановити перед запуском python.
Якщо ви використовуєте Python, ви можете визначити змінні середовища у .env
файлі та завантажити їх із блокнота Jupyter за допомогою python-dotenv .
Встановіть python-dotenv:
pip install python-dotenv
Завантажте .env
файл у блокнот Jupyter:
%load_ext dotenv
%dotenv
Ви можете налаштувати змінні середовища у своєму коді наступним чином:
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')
Це, звичайно, тимчасове виправлення, щоб отримати постійне, вам, ймовірно, потрібно експортувати змінні у свій ~.profile
, більше інформації можна знайти тут
%env MY_VAR=MY_VALUE
повинна бути правильною відповіддю на це запитання
Помилка, з якою я зіткнувся: Наступні дві команди еквівалентні. Зверніть увагу, що перший не може використовувати лапки. Дещо протилежне інтуїтивному наведенню рядка під час використання %env VAR ...
призведе до того, що лапки будуть включені як частина значення змінної, що, мабуть, не те, що ви хочете.
%env MYPATH=C:/Folder Name/file.txt
і
import os
os.environ['MYPATH'] = "C:/Folder Name/file.txt"
Якщо ви використовуєте systemd, я щойно дізнався, що вам, здається, потрібно додати їх до файлу одиниці systemd. Це стосується Ubuntu 16. Введення їх у .profile та .bashrc (навіть у / etc / profile) призвело до того, що VAR-адреси ENV будуть недоступні в блокнотах juypter.
Мені довелося відредагувати:
/lib/systemd/system/jupyer-notebook.service
і помістіть змінну, яку я хотів прочитати у файлі одиниці, наприклад:
Environment=MYOWN_VAR=theVar
і лише тоді я міг прочитати його із зошита juypter.
Пов’язане (короткострокове) рішення полягає у збереженні змінних середовища у одному файлі у передбачуваному форматі, який можна отримати при запуску терміналу та / або прочитати у блокноті. Наприклад, у мене є файл, .env
який має визначення моїх змінних середовища у форматі VARIABLE_NAME=VARIABLE_VALUE
(без порожніх рядків або зайвих пробілів). Ви можете отримати цей файл у файлах .bashrc
або, .bash_profile
починаючи новий термінальний сеанс, і можете читати його в блокноті чимось на зразок,
import os
env_vars = !cat ../script/.env
for var in env_vars:
key, value = var.split('=')
os.environ[key] = value
Я використав відносний шлях, щоб показати, що цей .env
файл може жити де завгодно і на нього можна посилатися щодо каталогу, що містить файл блокнота. Це також має ту перевагу, що ніде не відображає значення змінних у коді.