2

卵としてパッケージ化したいコードをいくつか書きました。これは私のディレクトリ構造です:

ソース/
ソース/テスト
src/tests/test.py # これには映画名パーサーのいくつかのテストがあります
ソース/トレント
ソース/急流/__init__.py
src/torrent/movienameparser
src/torrent/movienameparser/__init__.py # これにはコードが含まれます

このディレクトリ構造を卵としてパッケージ化し、テスト ファイルも含めたいと思います。setup.py任意の数の名前空間と任意の数のテストを作成できるようにするには、ファイルに何を含める必要がありますか?

これは、私が共有したい最初のオープン ソース コードです。おそらく、このモジュールが役に立つと思うのは私だけでしょうが、 にアップロードしたいと思いpypiます。ユーザーがコードを使用してやりたいことを実行でき、再配布や変更に制限がない場合、どのライセンスを使用できますか?

この卵を更新する予定ですが、私は何の責任も負いません (ユーザーへのサポートの提供など)。わがままに聞こえるかもしれませんが、これは私の最初のオープン ソース コードなので、ご容赦ください。ライセンスのコピーを提供する必要がありますか? コピーはどこで入手できますか?

これをすべて読んでくれてありがとう。

4

3 に答える 3

6

ここではライセンスについては触れませんが、パッケージ ソース コードのルートに LICENSE ファイルを含めるのが一般的です。

私は通常、ターゲット システムにインストールされるのと同じ方法でパッケージを整理します。ここでは、標準のパッケージ レイアウト規則について説明します。

たとえば、パッケージが「torrent」で、「tests」や「util」などのサブパッケージがいくつかある場合、ソース ツリーは次のようになります。

ワークスペース/トレント/setup.py
ワークスペース/トレント/トレント/__init__.py
ワークスペース/トレント/トレント/foo.py
ワークスペース/トレント/トレント/bar.py
ワークスペース/トレント/トレント/...
ワークスペース/トレント/トレント/tests/__init__.py
ワークスペース/急流/急流/テスト/test.py
ワークスペース/トレント/トレント/テスト/...
ワークスペース/急流/急流/util/__init__.py
ワークスペース/急流/急流/util/helper1.py
ワークスペース/トレント/トレント/ユーティリティ/...

この 'torrent/torrent' ビットは冗長に見えますが、これはこの標準的な規則と Python インポートの動作の副作用です。

これは非常にミニマリストです(セットアップスクリプトの書き方setup.pyに関する詳細情報):

#!/usr/bin/env python

from distutils.core import setup

setup(name='torrent',
      version='0.1',
      description='would be nice',
      packages=['torrent', 'torrent.tests', 'torrent.util']
)

ソース ディストリビューションを取得するには、次のようにします。

$ cd ワークスペース/トレント
$ ./setup.py sdist

このディストリビューション ( dist/torrent-0.1.tar.gz) は、解凍して実行するsetup.py installか、ツールキットeasy_installから使用するだけで、単独で使用できsetuptoolsます。また、サポートされているバージョンの Python ごとにいくつかの「卵」を作成する必要はありません。

本当に卵が必要な場合は、に依存関係を追加する必要がありsetuptoolsます。これにより、卵を生成するsetup.py追加のサブコマンドが導入されます。bdist_egg

しかし、卵を産む性質に加えて、素晴らしいヘルパー関数を使用してsetuptoolsパッケージを列挙する必要がなくなるという別の利点があります。setup.pyfind_packages

#!/usr/bin/env python

from setuptools import setup, find_packages

setup(name='torrent',
      version='0.1',
      description='would be nice',
      packages=find_packages()
)

次に、「卵」を取得するために、次のことを行います。

$ cd ワークスペース
$ ./setup.py bdist_egg

...そして、卵ファイルが表示されます:dist/torrent-0.1-py2.6.egg

接尾辞に注意してくださいpy2.6。これは、私のマシンに Python 2.6 があるためです。多くの人を喜ばせたい場合は、Python のメジャー リリースごとに卵を公開する必要があります。玄関先に斧や槍を持った Python 2.5 の大群がいるのは嫌ですよね?

ただし、タマゴを作成する必要はありませんsdist。サブコマンドを使用することはできます。

更新:これは、ユーザーの観点から紹介する Python ドキュメントの別の便利なページです。Distutils

于 2009-08-19T21:29:42.057 に答える
3

.tar.gz卵としてではなく、tarball()として配布する方がよいでしょう。卵は、コンパイルされたC拡張機能を使用する場合など、主にバイナリ配布用です。ソースのみのディストリビューションでは、それらは単に不必要な複雑さです。

コードを世に送り出したいだけなら、MITまたは3条項BSDライセンスが最も人気のある選択肢です。どちらにも責任の免責事項が含まれています。あなたがしなければならないのは、tarballにメインライセンスを含めることだけです。通常、「License.txt」などとして使用されます。オプションで、各ソースファイルに小さな著作権表示を追加できます。これをお勧めします。アーカイブ全体がなくても各ファイルのステータスは明らかですが、冗長すぎると考える人もいます。それは個人的な好みの問題です。

BSDライセンスは、以下にコピーされたWikipdiaで入手できます。

Copyright (c) <year>, <copyright holder>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the <organization> nor the
      names of its contributors may be used to endorse or promote products
      derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY <copyright holder> ''AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
于 2009-08-19T21:21:08.937 に答える
0

setuptools Web サイトから ez_setup ファイルをインクルードし、setup.py の上部に以下をインクルードします。

from ez_setup import use_setuptools
use_setuptools()

このスクリプトは、setuptools を持っていない人のためのヘルパーです。setuptools がインストールされていないシステムに setuptools の最新バージョンをダウンロードしてインストールします。

于 2010-08-12T16:04:05.280 に答える