От Python relative imports for the billionth time:Interactive Python - решения для относительных импорта
- Для
from .. import
работать, имя модуля должен иметь по крайней мере столько же точек, сколько вimport
заявлении. - ... если вы запустите интерпретатор в интерактивном режиме ... название этой интерактивной сессии является
__main__
- Таким образом, вы не можете сделать относительно импорта непосредственно из интерактивной сессии
Мне нравится использовать интерактивный Jupyter ноутбук сессий для изучения данных и тестовых модулей перед написанием производственного кода. Чтобы сделать вещи понятными и доступными для товарищей по команде, мне нравится размещать ноутбуки в пакете 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
?
Я думаю, что имеет смысл добавить родительский каталог 'package' в' sys.path'. Таким образом, вы всегда можете делать 'из пакета package.subpackageN import moduleZ' – theorifice