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?)
Foi útil?

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( )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top