Невозможно импортировать модуль, который находится в пути Jupyter - PullRequest
3 голосов
/ 04 февраля 2020

Я пишу свои модули в ноутбуках Jupyter и храню их в папке, скажем, /Users/me/myModules (Примечание: фактический путь содержит пробелы, это имеет значение?)

Я хочу импортировать их из другие ноутбуки Jupyter, которые находятся в разных местах. Поскольку модули имеют расширение .ipynb, я начинаю свой код с import import_ipynb.

. Я следовал за этим ответом и добавил

export JUPYTER_PATH="${JUPYTER_PATH}:/Users/me/myModules"

в верхнюю строку моего Файл bash_profile и сохранен. Затем я запускаю source ~/.bash_profile в терминале.

Теперь, когда я запускаю jupyter --paths в терминале, я вижу путь к папке myModules в разделе данных (не в разделах config или runtime).

Однако в моем блокноте jupyter

import import_ipynb
import myFirstModule

выдает ошибку ModuleNotFoundError: нет модуля с именем myFirstModule. Я использую Python 3.6.10 (Anaconda).

Как мне импортировать модуль из пути jupyter?

( На самом деле я нашел решение , просто набрав %cd '/Users/me/myModules' в начале каждой записной книжки, но затем каждый сохраненный файл (например, экспортированное изображение) помещается в папку myModules, чего я не хочу)

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

Я не могу воспроизвести вашу проблему без дополнительных подробностей, но я хотел бы предоставить вам некоторые обходные пути, которые позволят вам загружать ваши модули в /Users/me/myModules без изменения каталога в Jupyter:

import os
from importlib.util import spec_from_file_location, module_from_spec

path = 'full/path/to/Users/me/myModules'

for fn in os.listdir(path):
    fp = os.path.join(path, fn)
    spec = spec_from_file_location(fn, fp)
    mod = module_from_spec(spec)
    spec.loader.exec_module(mod)

После выполнения этого фрагмента кода ваши модули будут уже импортированы и бесплатны для использования.

0 голосов
/ 09 февраля 2020

Я думаю, что лучший способ выполнить импорт между ноутбуками - это использовать %run magics:

%run `full/path/to/the/notebook.ipynb`

... а здесь нет %cd.

Здесь Например: 2 записных книжки расположены в разных местах, mySecondModule выполняет импорт myFirstModule.

m1 m2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...