Я хотел бы импортировать функцию из другого ipython-ноутбука. Скажем,
common_func.ipnb
имеет def func_a()
Когда я создаю новый блокнот, как я могу получить доступ к func_a
из другого блокнота, но в той же папке и в том же экземпляре ipython?
Я хотел бы импортировать функцию из другого ipython-ноутбука. Скажем,
common_func.ipnb
имеет def func_a()
Когда я создаю новый блокнот, как я могу получить доступ к func_a
из другого блокнота, но в той же папке и в том же экземпляре ipython?
В списке рассылки IPython это обсуждалось совсем недавно, см. здесь. Наконец (здесь), был найден пример ноутбука, который показывает способ импорта кода из других ноутбуков. Этот ноутбук можно найти в каталоге examples/notebooks
и выглядит как this. Вам просто нужно определить классы NotebookLoader и NotebookFinder, как показано в записной книжке. Я пробовал с IPython 1.1.0, и он отлично работает!
При запуске ipython используйте флаг - script: Например
ipython notebook --script
Затем, когда вы сохраняете свой ноутбук "common_func.ipnb", он также создает файл под названием "common_func.py". Вы можете импортировать функции с помощью
from common_func import func_a
Если вы замените ноутбук common_func, вам может понадобиться
reload()
Теперь для этого есть специальная функция, называемая nbimporter
, которая устанавливается через pip.
Использование:
import nbimporter
import notebookName as name
name.functionName()
А если вы обновите notebookName.ipynb, перезагрузите его:
reload(name)
или это для Python 3 (перезагрузка не включена по умолчанию):
from importlib import reload
reload(name)
Другой вариант - ipynb
. Хорошим преимуществом по сравнению с nbimporter
является то, что он может импортировать только определения, не выполняя остальную часть кода. Это довольно новый на данный момент (0.5).
pip install ipynb
А потом:
import ipynb.fs.defs.my_other_notebook as other
importnb является опцией. У него есть несколько приятных функций, таких как нечеткое сопоставление, которые помогут вам найти свой блокнот и помогают в импорте блокнотов, где обычно возникает проблема с именем,