Лучшие практики импорта Python в производственный проект: обработка относительного/абсолютного импорта в разных каталогаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Лучшие практики импорта Python в производственный проект: обработка относительного/абсолютного импорта в разных каталога

Сообщение Anonymous »

У меня есть следующая структура папок в Python:

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

my_project/
├── Dockerfile
├── Makefile
├── run.py
├── data/
│   ├── raw/
│   └── processed/
└── src/
├── __init__.py
├── config.py
├── settings.env
└── response/
├── __init__.py
├── llm.py
├── instances.py
└── get_response.py
Контекст
Я начал с простого проекта по получению структурированных ответов от магистратуры с использованием Python. По мере роста проекта я решил сделать его более готовым к производству, добавив правильную структуру и организацию. Однако я не уверен, что моя текущая структура оптимальна, особенно в отношении обработки импорта.
Текущие проблемы
Изначально, когда весь код был в одном папке импорт был простым:

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

# When everything was in one folder
from llm import get_completion
from instances import MyClass
После реструктуризации и использования run.py в качестве основной точки входа мне пришлось изменить импорт для работы из родительского каталога:

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

# In run.py
from src.response.llm import get_completion
from src.response.instances import MyClass
Конкретные вопросы
Правильно ли это структурировать готовый к использованию проект Python?
Как мне следует обрабатывать импорт, когда я захочу чтобы:
Запускать тесты из отдельного тестового каталога?
Выполнять файлы непосредственно в их папках (например, для разработки/отладки)?
Использовать if __name__ == '__main__': блок с тестовым кодом в отдельных файлах?
Нужно ли мне изменять операторы импорта каждый раз, когда я запускаю файлы из разных мест? Является ли добавление корня проекта в путь Python при прямом запуске лучшим вариантом?
Технические подробности
Версия Python: 3.11
Текущее поведение: файлы запускаются корректно только при запуске из родительского каталога.
Желаемое поведение: возможность запуска файлов, тестов и отладки кода из любого места без постоянного изменения импорта ( если можно)
В настоящее время я не могу запускать различные сценарии из их собственного местоположения, мне приходится запускать их из корня проекта. Как я могу заставить их работать из любого места?

Подробнее здесь: https://stackoverflow.com/questions/793 ... lative-abs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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