Интерактивный Python - решения для относительного импорта

88
8

От относительного импорта Python за миллиардный раз:

    Для работы from.. import Имя модуля должно иметь как минимум столько точек, сколько указано в инструкции import. ... если вы запускаете интерпретатор в интерактивном режиме... имя этого интерактивного сеанса - __main__ Таким образом, вы не можете выполнять относительный импорт непосредственно с интерактивного сеанса

Мне нравится использовать интерактивные сессии Jupyter Notebook для изучения данных и тестовых модулей перед написанием производственного кода. Чтобы сделать вещи понятными и доступными для товарищей по команде, мне нравится размещать ноутбуки в interactive пакете, расположенном рядом с пакетами и модулями, которые я тестирую.

package/

__init__.py

subpackage1/

__init__.py

moduleX.py

moduleY.py

moduleZ.py

subpackage2/

__init__.py

moduleZ.py

interactive/
__init__.py
my_notebook.ipynb

Во время интерактивного сеанса в interactive.my_notebook.ipynb, как бы вы импортировали другие модули, такие как subpackage1.moduleX и subpackage2.moduleZ?

спросил(а) 2021-01-25T14:16:47+03:00 4 месяца, 3 недели назад
1
Решение
77

Решением, которое я использую в настоящее время, является добавление родительского пакета в sys.path.

import sys
sys.path.append("/Users/.../package/")

import subpackage1.moduleX
import subpackage2.moduleZ

ответил(а) 2021-01-25T14:16:47+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема