3

いくつかのライブラリ(Paramikoなど)に依存するCLIpythonアプリケーションを作成しています。それらのソースをダウンロードしてメインのアプリケーションソースの下に置くだけで、それらをインポートでき、すべてが正常に機能します。setup.pyインストーラーを実行したり、Pythonパッケージマネージャーを処理したりする必要があるのはなぜですか?

サーバーサイドアプリケーションをデプロイする場合、管理者がeasy_install / pipコマンドなどを実行して前提条件をインストールすることは問題ありませんが、Pythonのみに依存する自己完結型アプリとして配布する必要があるCLIアプリのようなスクリプトの場合は理解していますバイナリ、推奨されるアプローチは何ですか?

4

1 に答える 1

2

いくつかの理由:

  • すべてのパッケージが純粋なPythonパッケージであるとは限りません。パッケージにC拡張機能を含めてsetup.py、コンパイルプロセスを自動化するのは簡単です。

  • 自動化された依存関係管理。依存関係は、インストーラーツール( pip、、 )によって宣言およびインストールされます。依存関係は動的に宣言することもできます(インポートしてみてください。失敗した場合は、依存関係を宣言するなど)。easy_installzc.buildoutjsonsimplejson

  • カスタムリソースのインストール設定。インストールプロセスは高度に構成可能で動的です。依存関係の検出についても同じことが言えます。たとえば、cx_Oracleサポートする必要のあるOr​​acleライブラリ配布オプションのさまざまなプラットフォームや癖をすべて簡単にインストールできるようにするには、かなりの手順を踏む必要があります。

なぜCLIスクリプトに対してこれを実行したいのですか?これは、CLIがユーザーにとってどれほど重要かによって異なります。今後数年間、これを維持しますか?次に、最小限のバージョンの必要性を含め、依存関係が何であるかを文書setup.py化するため、引き続きを使用します。テスト()を追加し、新しい場所にデプロイしたり、依存関係を簡単にアップグレードしたりできます。python setup.py test

于 2013-02-15T13:03:29.117 に答える