目次

前のトピックへ

パッケージインデクスに登録する

次のトピックへ

このページ

パッケージを Package Index にアップロードする

バージョン 2.5 で追加.

Python Package Index (PyPI) は、パッケージ情報に加えて、作者が望むのであればパッケージデータを置くこともできます。 distutils の upload コマンドは配布物をPyPIにアップロードします。

このコマンドは一つ以上の配布物ファイルをビルドした直後に呼び出されます。例えば、次のコマンド

python setup.py sdist bdist_wininst upload

は、ソース配布物とWindowsのインストーラをPyPIにアップロードします。以前に setup.py を実行してビルドした配布物もアップロード対象になるけれども、アップロードされるのは upload コマンドと同時に指定された配布物だけだということに注意してください。

upload コマンドは、 $HOME/.pypirc ファイル (詳しくは .pypirc ファイル セクションをご覧下さい) の、ユーザー名、パスワードとリポジトリURLを利用します。同じコマンド内で register コマンドが呼ばれていて、そこでプロンプトからパスワードを入力した場合、 upload は入力されたパスワードを再利用します。 $HOME/.pypirc ファイルにプレインテキストでパスワードを保存したくない場合はこの方法を利用できます。

--repository=*url* オプションを使って別のPyPIサーバーを指定することができます。

python setup.py sdist bdist_wininst upload -r http://example.com/pypi

複数のサーバーを定義することについて、より詳しい情報は .pypirc ファイル を参照してください。

--sign オプションで、アップロードする各ファイルにGPG (GNU Privacy Guard) を使うことができます。 gpg プログラムが環境変数 PATH から実行可能である必要があります。署名にどの鍵を使うかを、 --identity=*name* で指定することもできます。

他の upload のオプションには、 --repository= (url はサーバーのURL), --repository= (section$HOME/.pypirc のセクション名), --show-response (アップロードの問題をデバッグするために、PyPI サーバーからの全てのレスポンスを表示する)があります。

PyPI パッケージ表示

long_description フィールドは PyPI において特別な役目を持ちます。サーバーは登録されたパッケージのホームページを表示するためにこれを利用します。

このフィールドに reStructuredText 記法を利用した場合、 PyPI はこれをパースして、パッケージのホームページにHTML 出力を表示します。

long_description フィールドにパッケージ内のファイルの内容を利用することもできます。

from distutils.core import setup

with open('README.txt') as file:
    long_description = file.read()

setup(name='Distutils',
      long_description=long_description)

この例では、 README.txt は通常の reStructuredText テキストファイルで、 setup.py と同じパッケージのルートディレクトリに置かれています。

壊れた reStructuredText を登録してしまうのを防ぐために、コマンドラインから docutils パッケージが提供している rst2html プログラムを利用して long_description をチェックすることができます。

$ python setup.py --long-description | rst2html.py > output.html

文法に問題がある場合は、 docutils は警告を表示するはずです。