Design de implantação do projeto Python
-
28-09-2019 - |
Pergunta
Aqui está a situação: a empresa em que estou trabalhando agora me deu a liberdade de trabalhar com Java ou Python para desenvolver meus aplicativos. A empresa experimenta principalmente em Java.
Eu decidi ir com o Python, então eles estão muito felizes em me pedir para dar manutenção a todos os projetos/scripts do Python relacionados à manutenção do banco de dados que eles têm.
Não é tão ruim lidar com tudo isso e é divertido ver quanto tempo livre eu comparei aos programadores Java. Há apenas um, mas o layout dos projetos é uma bagunça.
Existem muitos scripts que simplesmente estão em máquinas virtuais em toda a empresa. Alguns deles têm funcionalidade complexa que se espalha por alguns módulos (4 no máximo.)
Enquanto pensava sobre isso, percebi que não sei como abordar isso, então aqui estão três perguntas.
- Onde eu coloco scripts independentes? Usamos o Git como nosso sistema de versão.
- Como estruturar o layout do projeto de uma maneira que o usuário não precisa cavar profundamente nas pastas para executar os programas (em Java, criei uma jarra ou uma jarra e um script de shell para lidar com algumas operações de bootstrap.)
- O que é uma maneira padrão de criar módulos que permitam fácil reutilização (mycompany.myapp.mymodule?)
Solução
Onde eu coloco scripts independentes?
Você os organiza "funcionalmente" - com base no que eles fazem e por que as pessoas os usam.
A linguagem (Python vs. Java) é irrelevante.
Você precisa pensar em scripts como pequenos aplicativos focados em alguma necessidade e criar estruturas de diretório apropriadas para esse aplicativo.
Nós usamos /opt/thisapp
e /opt/thatapp
. Se você deseja um ponto de montagem compartilhado, pode usar um caminho diferente.
Como estruturar o layout do projeto de uma maneira que o usuário não precisa cavar profundamente nas pastas para executar os programas
Você os organiza "funcionalmente" - com base no que eles fazem e por que as pessoas os usam. No nível superior de um /opt/thisapp
diretório, você pode ter um __init__.py
(porque é um pacote) e talvez um main.py
Script que inicia o trabalho real.
No Python 2.7 e Python 3, você tem o runpy
módulo. Com isso, você nomearia seu script principal de nível superior __main__.py
http://docs.python.org/library/runpy.html#module-runpy
O que é uma maneira padrão de criar módulos que permitam fácil reutilização (mycompany.myapp.mymodule?)
Ler sobre packages
. http://docs.python.org/tutorial/modules.html#packages
Outras dicas
UMA pacote é uma maneira de criar uma hierarquia de módulo: se você fizer um arquivo chamado __init__.py
Em um diretório, o Python tratará esse diretório como um pacote e permitirá que você importe seu conteúdo usando importações pontilhadas:
spam \
__init__.py
ham.py
eggs.py
import spam.ham
Os módulos dentro de um pacote podem se referir um ao outro - consulte os documentos.
Se todos esses scripts de manutenção de banco de dados, eu faria um pacote chamado DB ou algo assim, e colocaria todos eles nele. Você pode ter subpackagens para os mais complicados. Então, se você tivesse um script, eu não sei, limpando os registros de transações, você pode colocá -lo ourDB.clean
e fazer
import ourDB.clean
ourDB.clean.transaction_logs( )