Проект развертывания проекта Python - PullRequest
1 голос
/ 12 августа 2010

Вот ситуация: компания, в которой я сейчас работаю, дала мне свободу работать с Java или Python для разработки моих приложений. Компания имеет в основном опыт работы в Java.

Я решил пойти с python, поэтому они очень рады попросить меня поддержать все проекты / скрипты python, связанные с обслуживанием баз данных, которые у них есть.

Не так уж плохо справляться со всем этим, и довольно забавно наблюдать, сколько у меня свободного времени по сравнению с Java-программистами. Есть только один, но макет проектов беспорядок.

Есть много сценариев, которые просто лежат на виртуальных машинах по всей компании. Некоторые из них имеют сложную функциональность, распределенную по нескольким модулям (максимум 4).

Размышляя об этом, я понял, что не знаю, как с этим справиться, поэтому вот 3 вопроса.

  • Где я могу поместить автономные скрипты? Мы используем git в качестве нашей системы управления версиями.
  • Как структурировать макет проекта таким образом, чтобы пользователю не нужно было копаться глубоко в папках для запуска программ (в java я создал jar или jar и скрипт оболочки для обработки некоторых операций начальной загрузки).
  • Каков стандартный способ создания модулей, обеспечивающих простое повторное использование (mycompany.myapp.mymodule?)

Ответы [ 2 ]

2 голосов
/ 13 августа 2010

Где я могу разместить автономные скрипты?

Вы организуете их «функционально» - основываясь на том, что они делают и почему люди их используют.

Язык (Python против Java) не имеет значения.

Вы должны думать о скриптах как о небольших приложениях, ориентированных на определенные потребности, и создавать соответствующие структуры каталогов для этого приложения.

Мы используем /opt/thisapp и /opt/thatapp. Если вам нужна общая точка монтирования, вы можете использовать другой путь.

Как структурировать макет проекта таким образом, чтобы пользователю не нужно было копаться в папках для запуска программ

Вы организуете их «функционально» - основываясь на том, что они делают и почему люди их используют. На верхнем уровне каталога /opt/thisapp у вас может быть __init__.py (потому что это пакет) и, возможно, сценарий main.py, который начинает настоящую работу.

В Python 2.7 и Python 3 у вас есть модуль runpy. С этим вы бы назвали свой главный скрипт верхнего уровня __main__.py

http://docs.python.org/library/runpy.html#module-runpy

Каков стандартный способ создания модулей, обеспечивающих простое повторное использование (mycompany.myapp.mymodule?)

Читать о packages. http://docs.python.org/tutorial/modules.html#packages

2 голосов
/ 12 августа 2010

A пакет - это способ создания иерархии модулей: если вы создадите файл с именем __init__.py в каталоге, Python будет рассматривать этот каталог как пакет и позволит вам чтобы импортировать его содержимое, используя точечный импорт:

spam \
       __init__.py
       ham.py
       eggs.py

import spam.ham

Модули внутри пакета могут ссылаться друг на друга - см. Документы.

Если это все сценарии обслуживания БД, я бы сделал пакет с именем БД или что-то в этом роде и поместил бы их все в него. Вы можете иметь подпакеты для более сложных. Так что если у вас есть скрипт для очистки журналов транзакций, я не знаю, вы можете поместить его в ourDB.clean и сделать

import ourDB.clean
ourDB.clean.transaction_logs( )
...