Suponha que eu tenha uma função ou classe python útil (ou o que seja) chamada useful_thing
que exista em um único arquivo. Existem essencialmente duas maneiras de organizar a árvore de origem. A primeira maneira usa um único módulo:
- setup.py
- README.rst
- ...etc...
- foo.py
onde useful_thing
é definido em foo.py
. A segunda estratégia é fazer um pacote:
- setup.py
- README.rst
- ...etc...
- foo
|-module.py
|-__init__.py
onde useful_thing
é definido em module.py
. No caso do pacote __init__.py
ficaria assim
from foo.module import useful_thing
para que nos dois casos você possa fazer from foo import useful_thing
.
Pergunta: Qual o caminho preferido e por quê?
EDIT: Como o usuário gnat diz que esta pergunta está mal formada, acrescentarei que o tutorial oficial de empacotamento do python parece não comentar sobre qual dos métodos descritos acima é o preferido. Eu explicitamente estou não dando a minha lista pessoal de prós e contras, porque eu estou interessado em saber se há um método comunidade preferido, não gerando uma discussão sobre vantagens / desvantagens :)
fonte
Respostas:
Você faz a coisa mais simples que funciona para você .
Para um módulo de uma função , não há absolutamente nenhum sentido em criar um pacote. Os pacotes são úteis para criar um espaço para nome adicional e / ou para organizar seu código em vários módulos.
Os módulos
json
eunittest
na biblioteca padrão do Python são realmente pacotes, por exemplo, para fins de organização de código. Mas é perfeitamente bom deixar o código atualmente vivendo em apenas um arquivo python, como um módulo.Se você quiser exemplos:
six
é uma distribuição de apenas um módulosetuptools_subversion
,formatflowed
,rtfunicode
.Para um bom exemplo de projetos que realmente fazem excelente uso de pacotes, veja:
requests
Não há recomendação 'oficial'; ambas as opções são totalmente válidas.
fonte