Упаковка Python: включая файлы/модули, которые импортируют друг друга.Python

Программы на Python
Anonymous
Упаковка Python: включая файлы/модули, которые импортируют друг друга.

Сообщение Anonymous »

Извините за простой вопрос, но я просмотрел несколько руководств и до сих пор не уверен, как лучше всего решить мою проблему.
Я пытаюсь установите мой код Python локально, чтобы его было легче импортировать в другие проекты, которые я разрабатываю (основной проект — это симулятор, который я хочу использовать в других приложениях).
У меня есть следующее: структура пакета:

Код: Выделить всё

simulator/
+- simulator/
+- data/
+- model.yaml
+- __init__.py
+- sim.py
+- dynamics.py
+- config.py
+- setup.py
с этим файлом setup.py:

Код: Выделить всё

from setuptools import setup, find_packages

setup(name='simulator',
version='0.1.0',
author='LC',
packages=find_packages(include=['simulator', 'simulator.*'])
)
Запуск pip install -e . --user в папке симулятора верхнего уровня достигает желаемого результата установки пакета, например. Я могу использовать утверждения

Код: Выделить всё

import simulator
from simulator.sim import run
из других файлов кода в моей системе. Но предположим, что сим импортирует динамику. Это ломает ситуацию: я получаю ModuleNotFoundError при выполнении второго оператора.
Что мне нужно сделать, чтобы упаковать код, когда файлы/модули в пакете импортируются каждый другое таким образом? Полагаю, я мог бы импортировать их все внутри __init__.py, как в этой статье: https://changhsinlee.com/python-package/, но я не знаю, вызовет ли это какие-либо проблемы с циклическим импортом или другие непредвиденные последствия.
(Кроме того, как я могу гарантировать, что папка данных и файл yaml также включены?)

Подробнее здесь: https://stackoverflow.com/questions/784 ... each-other

Вернуться в «Python»