5

私が書いている Python パッケージのディストリビューションを開発しているので、PyPI に投稿できます。distutils、setuptools、distribute、pip、setup.pyなどを扱うのは初めてで、予想よりもかなり急な学習曲線に少し苦労しています:)

setup.pyのパラメーターで指定することで、テスト データ ファイルの一部を tarball に含めるのに少し苦労していましたが、別の投稿でそのファイルdata_filesを指し示してくれました。MANIFEST.inちょうどその時、tarball/zip に含めるもの (MANIFEST.in を使用) と、ユーザーが easy_install などを実行したときにユーザーの Python 環境にインストールされるもの (で指定した内容に基づくsetup.py) は、2 つの非常に異なるものであるという考えに気付きました。 ; 一般に、tarball には実際にインストールされるよりもはるかに多くのものがあります。

これはすぐにコードの匂いがして、ディストリビューションには複数のユースケースが必要であることに気づきました。easy_install または pip を使用してライブラリをインストールする、私が実際に参加した唯一のものに固執していました。そして、自分が開発しているエンドユーザーを部分的にしか理解していない作業製品を開発していることに気付きました.

そこで私の質問は次のとおりです。「Python 環境にインストールする以外に、Python ディストリビューションの使用例は何ですか? このディストリビューションで他に誰にサービスを提供していて、彼らは何を最も気にかけているのでしょうか?」

答えに関係する、まだ理解していない作業上の問題のいくつかを次に示します。

  • ソース管理 (git) の下にあるすべてのものをソース配布に含めることは賢明なことですか? github の時代に、ソース ディストリビューションをダウンロードしてプロジェクト ソース全体にアクセスする人はいますか? それとも、私の github リポジトリへのリンクを投稿するだけですか? すべてを含めると、ディストリビューションが肥大化して、インストールしたいだけの人がダウンロードするのに時間がかかりませんか?

  • readthedocs.org でドキュメントをホストします。ソース配布物にドキュメントの HTML バージョンを含めることは意味がありますか?

  • python setup.py testソースディストリビューションでテストを実行するために使用する人はいますか? もしそうなら、彼らはどのような役割を果たしており、どのような状況にありますか? それを機能させることに煩わされるべきかどうか、もしそうするなら、誰のために機能させるべきかわかりません。

4

1 に答える 1

4

ソースディストリビューションに含めたいが、インストールしない可能性があるものには、次のものがあります。

  • パッケージのライセンス
  • テストスイート
  • ドキュメント (おそらく、ソースに加えて HTML のような処理されたフォーム)
  • おそらく、ソース配布をビルドするために使用される追加のスクリプト

多くの場合、これはバージョン管理で管理しているものの大部分またはすべてであり、場合によってはいくつかの生成されたファイルです。

これらのファイルがオンラインまたはバージョン管理を通じて入手できるときにこれを行う主な理由は、実行しているコードと一致するバージョンのドキュメントまたはテストがあることを人々に知らせるためです。

ドキュメントの最新バージョンのみをオンラインでホストしている場合、何らかの理由で古いバージョンを使用しなければならない人には役に立たない可能性があります。また、バージョン管理のヒントにあるテスト スイートは、ソース配布のコードのバージョンと互換性がない場合があります (たとえば、それ以降に追加された機能をテストする場合)。ドキュメントまたはテストの適切なバージョンを取得するには、バージョン管理をくまなく調べて、ソース ディストリビューションに対応するタグを探す必要があります (開発者がわざわざツリーにタグを付けたと仮定すると)。ソース配布でファイルを使用できるようにすることで、この問題を回避できます。

テスト スイートを実行したい人については、さまざまな Linux ディストリビューションにパッケージ化された多数の Python モジュールがあり、環境でのテストの失敗に関連するバグ レポートを時折受け取ります。また、バグに遭遇し、外部コードが私の環境で作成者が期待するように動作しているかどうかを確認したい場合は、他の人のモジュールのテスト スイートを使用しました。

于 2013-01-21T11:35:08.267 に答える