Дизайн развертывания проекта Python
-
28-09-2019 - |
Вопрос
Вот ситуация: компания, которую я работаю в прямо сейчас, дал мне свободу работать с Java, либо Python, чтобы развить мои приложения. Компания имеет в основном опыт в Java.
Я решил пойти с Python, поэтому они, где очень рад попросить меня дать обслуживание всем проектам / сценариям Python, связанным с обслуживанием базы данных, которые у них есть.
Это не так уж плохо, чтобы справиться со всеми такими вещами и своего рода весело видеть, сколько свободного времени я по сравнению с Java-программистами. Есть только один, но, макет проектов - это беспорядок.
Есть много сценариев, которые просто лежали на виртуальных машинах по всей компании. У некоторых из них есть сложная функциональность, которая распространяется по нескольким модулям (4 максимум.)
По мнению об этом, я понял, что я не знаю, как обратиться к этому, поэтому вот 3 вопроса.
- Где я поставил автономные сценарии? Мы используем Git в качестве нашей системы версий.
- Как структурируйте компоновку проекта таким образом, что пользователю не нужно глубоко копать в папки, чтобы запустить программы (в Java, я создал JAR или JAR и сценарий оболочки для обработки некоторых операций загрузки.)
- Что такое стандартный способ создания модулей, которые позволяют легкую повторное использование (mycompany.myapp.mymodule?)
Решение
Где я поставил автономные сценарии?
Вы организуете их «функционально» - основываясь на том, что они делают и почему люди используют их.
Язык (Python против Java) не имеет значения.
Вы должны подумать о сценариях как небольшие приложения, ориентированные на некоторые необходимые и создают соответствующие структуры каталога для этого приложения.
Мы используем /opt/thisapp
а также /opt/thatapp
. Отказ Если вы хотите общий монт-точку, вы можете использовать другой путь.
Как структура макета проекта так, как пользователю не нужно глубоко копать в папки для запуска программ
Вы организуете их «функционально» - основываясь на том, что они делают и почему люди используют их. На верхнем уровне /opt/thisapp
каталог, у вас может быть __init__.py
(потому что это пакет) и, возможно, main.py
Сценарий, который начинает реальную работу.
В Python 2.7 и Python 3, у вас есть runpy
модуль. С этим вы бы назвали основной скрипт вашего верхнего уровня __main__.py
http://docs.yphon.org/library/runpy.html#module-runpy.
Что такое стандартный способ создания модулей, которые позволяют легкую повторное использование (mycompany.myapp.mymodule?)
Читать о packages
. http://docs.cython.org/tutorial/modules.html#packages.html#packages.
Другие советы
А. упаковка это способ создания иерархии модулей: если вы сделаете файл под названием __init__.py
В каталоге Python будет лечить этот каталог в качестве пакета и позволяет импортировать его содержимое с помощью пунктирных импорта:
spam \
__init__.py
ham.py
eggs.py
import spam.ham
Модули внутри пакета могут ссылаться друг на друга - см. Документы.
Если это все сценарии технического обслуживания БД, я бы сделал пакет под названием DB или что-то еще, и поместите их все в нем. Вы можете иметь подпрыгивания для более сложных. Так что, если у вас был скрипт, я не знаю, убирая журналы транзакций, вы могли бы поставить его в ourDB.clean
и делай
import ourDB.clean
ourDB.clean.transaction_logs( )