Здравствуйте, я изучаю python самостоятельно.
Знакомых питонистов у меня нет, по этому, негде подсмотреть Best practice, отсюда масса мелких вопросов.
Прежде всего, хотелось бы попросить помощи в выборе файловой структуры проекта.
Я хотел бы использовать в той или иной мере "ванильный" python 3.x. По этому, сознательно отказываюсь от фреймворков, на данный момент, чтобы прочувствовать все "неровности и гладкости" языка. При этом, разумеется, создается своя среда библиотек для приложения(как то: адаптеры для БД, утилита для чтения конфигов, прочее), но это не фреймворк, а всего лишь утилитарная среда академического уровня(т.е. just for fun уровня).
Проект представляет из себя системное приложение(хоть и сетевое, но к HTTP не имеет отношения). Т.к. я работаю web developer'ом, я себе представляю примерно такую файловую структуру:
/app
<business logic of app>
/lib
<packages of lib's>
main.py
Т.е. есть какое-то подобие фронт контроллера: main.py, который маршрутизирует запрос далее.
В папке /app лежит бизнес логика приложения, которая непосредственно зависит от этого приложения.
В папке /lib лежат пакеты как сторонние, так и текущего "фреймворка", т.е. та самая утилитарная среда.
Конфиги и логи, пока, не беру во внимание.
Прошу оценить такой подход и описать предложения, т.к. системных приложений на скриптах вне фреймворков я не писал лет 5 уж как.
Далее, мне не совсем ясно, как можно подключать отдельные файлы. Допустим, что flow примерно такой:
Вызывается main.py с аргументом --action fire. Значение аргумента --action передается в некий маршрутизатор в папке /lib, а тот(маршрутизатор), передает исполнение в некий контроллер в папке /app, который и занимается "выстрелом", т.е. тем, что задано в аргументе --action. После чего приложение завершается(пока что это не "демонический" режим). Если я достаточно ясно описал задание, не могли бы вы предложить решение? Т.е. какая файловая структура необходима для такого flow и как, например из маршрутизатора можно обратиться к необходимому обработчику в папке /app. Должны ли /app и /lib быть пакетами?
Если некоторые моменты путаны и требуются пояснения, пожалуйста, дайте мне знать.
Спасибо.
Python: Файловая структура проекта и Best practice
Модератор: Модераторы разделов
-
- Сообщения: 114
- ОС: Ubuntu
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Python: Файловая структура проекта и Best practice
Сколько людей - столько и мнений. Некоторые часто ссылаются на этот пост: http://as.ynchrono.us/2007/12/filesystem-s...project_21.html
Для веб-приложений на Python используют Django или Twisted. Если не следовать правилам фреймворка, то какая разница как разложены файлы - главное, чтобы это было понятно самому разработчику или читающему код.
Спасибо сказали:
-
- Сообщения: 2142
- Статус: *бунту ненавистник
- ОС: linux
Re: Python: Файловая структура проекта и Best practice
ага, и в сети открытых проектов тоже ни одного нет
-
- Сообщения: 114
- ОС: Ubuntu
Re: Python: Файловая структура проекта и Best practice
serzh-z, спасибо. действительно, разницы, пожалуй нет, но хорошие примеры всегда найдутся
landgraf, ну, вот зачем так? зачем так грубо? я понимаю, что такие вопросы могут раздражать.. но это не повод грубить разумеется, что я просмотрел пару проектов открытых, но откуда мне знать, что это хорошая практика? ну, и скажу честно, сходу разобраться в чужом коде не всегда легко, а в данном случае это слишком дорого.
landgraf, ну, вот зачем так? зачем так грубо? я понимаю, что такие вопросы могут раздражать.. но это не повод грубить разумеется, что я просмотрел пару проектов открытых, но откуда мне знать, что это хорошая практика? ну, и скажу честно, сходу разобраться в чужом коде не всегда легко, а в данном случае это слишком дорого.
-
- Сообщения: 2142
- Статус: *бунту ненавистник
- ОС: linux
Re: Python: Файловая структура проекта и Best practice
Denisiuk
Нисколько не хотел грубить, открытых проектов в сети очень много. Хотите точно проверенные и хорошие? Google, Red Hat помогут с этим :)
Что там на python писано?
yum, anaconda, gajim ....
Нисколько не хотел грубить, открытых проектов в сети очень много. Хотите точно проверенные и хорошие? Google, Red Hat помогут с этим :)
Что там на python писано?
yum, anaconda, gajim ....