Как выглядит макет приложения Python?
В большинстве сред программирования понятно, как код распределяется на несколько частей и как все взаимодействует. В Python я, кажется, полностью потерялся.
Как должен выглядеть макет приложения Python?
В настоящее время у меня есть:
setup.py Имя приложения/ __main__.py __init__.py Просмотры/ контроллеры / модель / ресурсы /<- изображения, видео,...
Как выполнить приложение?
У меня есть скрипт бегуна со следующим содержанием
#!/usr/bin/env python -m "application_name"
Нужно ли даже использовать
__main__.py
для этого? Нужен ли скрипт бегуна?Как импортировать части приложения? (Python 2.6)
Например в
application_name/__main__.py
from . import controllers.MainWindow
Как вы размещаете свои приложения?
1 ответ
Этот вопрос состоит из нескольких частей, поэтому я постараюсь ответить на них по очереди:
1: Вам решать, нет никаких жестких правил, кроме тех, которые устанавливают, что каталог должен рассматриваться как пакет, и так далее. Некоторые фреймворки предписывают структуру каталогов, используя скрипт для генерации скаффолдинга (немного как в Rails в мире Ruby), но это просто удобство или соглашение данной фреймворк. Организуйте свой код и модули так, чтобы они имели логический смысл, как на любом другом языке.
2: То, что у вас там, абсолютно нормально. В качестве альтернативы вы можете использовать установленный скрипт, если вы используете distutils, console_script как часть установки.egg или, в крайнем случае, просто вызовите скрипт main.py (или как вы его называете) напрямую. Сценарий console_script довольно распространен и используется такими инструментами, как, например, среда тестирования носа.
3: есть PEP для этой определенной темы. По моему опыту, вы действительно должны отдавать предпочтение абсолютному импорту относительно относительного. Чтобы заставить это поведение, вы можете сделать:
from __future__ import absolute_import