web-dev-qa-db-ja.com

Pythonアプリの「主な機能」はどこに置きますか?

Pythonスタンドアロンアプリケーション(ライブラリではない))を開発しているとします。

  1. Python=パッケージにしますか?または、互いに隣り合うファイルだけにしますか?
  2. それをパッケージにする場合、「開始点」ファイル(コードの最初の行が実行される場所)は何でしょうか? __init__.py?または、パッケージ内の関数を呼び出す、パッケージ外の短い「起動」スクリプトですか?
4
Aviv Cohn

アプリケーション全体が単一のファイルに収まる場合、それが最も簡単なソリューションです。

それ以外の場合は、完全なパッケージを作成することをお勧めします。 setuptoolsベースのsetup.pyファイルを作成すると、スクリプトとしてインストールする必要がある さまざまなエントリポイントを定義 できます。ただし、これらのエントリポイントはファイルではなく関数を参照します。

Python(python path/to/script.py args...)でスクリプトを実行する代わりに、モジュールまたはパッケージpython -m example.package args...を実行することもできます。モジュールの場合(Pythonファイル)、if __name__ == '__main__'チェックを実行してメイン関数にディスパッチする必要があります。パッケージ(つまり、__init__.pyファイルのあるディレクトリ)の場合は、__main__.pyファイルを作成する必要がありますエントリポイントとしてここに引数の解析とユーザーインターフェイスのコードを配置することは理にかなっています。

これは、既存のライブラリにコマンドラインインターフェイスを追加する場合に特に役立ちます。ただし、多くの場合、アプリケーションの中心的な動作をライブラリとして記述し、そのライブラリを単純なユーザーインターフェイスでラップするだけの方が洗練されています。特に、この階層化されたアーキテクチャにより、ユニットテストが容易になります。

4
amon