Как импортировать модуль в Jupyter notebook directory в ноутбуки в нижних каталогах? [дубликат]
этот вопрос уже есть ответ здесь:
- импорт локальной функции из модуля, размещенного в другом каталоге с относительным импортом в Jupyter notebook с помощью python3 3 ответы
я использовал Jupyter notebook для анализа данных довольно давно. Я хотел бы разработать модуль в моем ноутбуке jupyter каталог и иметь возможность импортировать этот новый модуль в ноутбуки. Мой каталог файлов Jupyter notebook можно представить следующим образом;
Jupyter notebooks
notebook1.ipynb
new_module
__init__.py
newfunction.py
currentnotebooks
notebook2.ipynb
при использовании import new_module
в notebook1.ipynb работает, однако, когда я пытаюсь выполнить ту же команду в notebook2.ipynb я получаю следующее ImportError: No module named 'new_module'
. Два очевидных решения: а) переместить new_module в каталог currentnotebooks или Б) переместить notebook2.ipynb до того же уровня, что и new_module. Я вообще не хочу возиться с файловой структурой. Есть это возможно?
1 ответов
вам нужно убедиться, что родительский каталог new_module
находится на вашем пути python. Для ноутбука, который находится на один уровень ниже new_module
этот код будет делать трюк:
import os
import sys
nb_dir = os.path.split(os.getcwd())[0]
if nb_dir not in sys.path:
sys.path.append(nb_dir)
если вы находитесь ниже в иерархии каталогов, вам нужно будет настроить путь nb_dir
установлен, но это все. Вы должны не запустить этот код для ноутбука в Jupyter notebooks
, так как это добавило бы родителя этого каталога в путь python, который, вероятно, нежелательный.
причина, по которой импорт работает для notebook1
это sys.Путь содержит ''
(пустая строка), которая всегда является текущим каталогом работающего интерпретатора (в данном случае ядра). Поиск в google для explain python path
появляется несколько хороших объяснений того, как python использовал PYTHONPATH
(он же sys.path
).