Как загрузить пользовательские ячейки magi c из соответствующего каталога (в блокноте Jupyter)? - PullRequest
1 голос
/ 08 января 2020

У меня есть пользовательский волшебный элемент c, который мне нужно загрузить с относительного пути. Я могу сделать это, когда каталог модуля находится в том же месте, что и ноутбук. Однако, это не работает, когда у меня более сложная структура каталогов.

Это работает, если структура каталогов такая:

test_custom_magic\
    |-custom_magic_code\
        |-__init__.py
        |-etcetc.py
    |-test_notebook.ipy

В этом сценарии я просто делаю %reload_ext custom_magic_code и мой код работает.

Однако теперь, когда я закончил написание и тестирование кода, я пытаюсь использовать его в более сложной директории:

important_project\
    |-notebooks\
        |-do_something_important.ipy
        |-do_something_else_important.ipy
    |-custom_magic_code\
        |-__init__.py
        |-etcetc.py

In do_something_important.ipy, я не могу просто %reload_ext custom_magic_code. Я получаю ModuleNotFoundError.

Если я пытаюсь %reload_ext ../custom_magic_code (или другой уровень вложенных каталогов), я получаю эту ошибку: TypeError: the 'package' argument is required to perform a relative import for '../custom_magic_code'

Как мне решить эту проблему? Обратите внимание, что мой пользовательский код magi c достаточно хорош для того, чтобы я мог работать локально. Я пока не совсем готов упаковать его и установить через pip / conda / nbextension (и я все равно стараюсь не изучать его, пока не смогу заставить мой текущий код работать).

1 Ответ

0 голосов
/ 16 января 2020

Итак, я использовал следующий код для включения соответствующего каталога в пути python проверок для поиска библиотек:

module_path = os.path.abspath(os.path.join('../..'))
if module_path not in sys.path:
    sys.path.append(module_path)

Кажется, работает!

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