Подтвердить что ты не робот

Как я могу импортировать из другого ipython-ноутбука?

Я хотел бы импортировать функцию из другого ipython-ноутбука. Скажем,

common_func.ipnb имеет def func_a()

Когда я создаю новый блокнот, как я могу получить доступ к func_a из другого блокнота, но в той же папке и в том же экземпляре ipython?

4b9b3361

Ответ 1

В списке рассылки IPython это обсуждалось совсем недавно, см. здесь. Наконец (здесь), был найден пример ноутбука, который показывает способ импорта кода из других ноутбуков. Этот ноутбук можно найти в каталоге examples/notebooks и выглядит как this. Вам просто нужно определить классы NotebookLoader и NotebookFinder, как показано в записной книжке. Я пробовал с IPython 1.1.0, и он отлично работает!

Ответ 2

При запуске ipython используйте флаг - script: Например

ipython notebook --script

Затем, когда вы сохраняете свой ноутбук "common_func.ipnb", он также создает файл под названием "common_func.py". Вы можете импортировать функции с помощью

from common_func import func_a

Если вы замените ноутбук common_func, вам может понадобиться

reload()

Ответ 3

Теперь для этого есть специальная функция, называемая nbimporter, которая устанавливается через pip.

Использование:

import nbimporter
import notebookName as name
name.functionName()

А если вы обновите notebookName.ipynb, перезагрузите его:

reload(name)

или это для Python 3 (перезагрузка не включена по умолчанию):

from importlib import reload
reload(name)

Ответ 4

Другой вариант - ipynb. Хорошим преимуществом по сравнению с nbimporter является то, что он может импортировать только определения, не выполняя остальную часть кода. Это довольно новый на данный момент (0.5).

pip install ipynb

А потом:

import ipynb.fs.defs.my_other_notebook as other

Ответ 5

importnb является опцией. У него есть несколько приятных функций, таких как нечеткое сопоставление, которые помогут вам найти свой блокнот и помогают в импорте блокнотов, где обычно возникает проблема с именем,