Волшебная команда Jupyter Lab / Notebook% загрузки с независимым от платформы путем - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь разработать блокнот Jupyter, включающий ячейки с командой% load magic для загрузки кода из другого места. Этот код не находится в той же директории, где находится ноутбук. Я хочу, чтобы это работало в Windows, Linux и Mac, поэтому разделители пути иногда должны быть '\', а иногда '/'.

Обычно я решал бы это, используя os.path.join. Тем не менее, когда я делаю это в соответствии с командой load, ноутбук просто оценивает путь и фактически не загружает код. Есть ли способ сделать это, кроме как сначала просто изменить рабочий каталог и вернуть его обратно после выполнения загруженного мной кода?

Краткий пример:

import os
%load os.path.join('example', 'file.py')

Это выдает ошибку, поскольку фактически будет искать файл с именем os.path.join ('example', 'file.py'). Если я сначала оцениваю это и помещаю результат в нагрузку, я получаю:

import os
to_include = os.path.join('example', 'file.py')
print(to_include)
%load to_include

Это оценивается как

# %load to_include
example/file.py

Но, очевидно, я хочу, чтобы содержимое этого файла загружалось, а не путь + имя файла. Что я делаю не так?

1 Ответ

0 голосов
/ 03 сентября 2018

В Jupyter вы должны расширять переменные в синтаксисе, похожем на bash, чтобы они работали в магических функциях.

Именно поэтому вам придется использовать знак $ . В вашем случае:

import os
to_include = os.path.join('example', 'file.py')
%load $to_include
...