PyPI によく合う README を作る#

README ファイルは、あなたのパッケージのユーザがプロジェクトを理解するのを助け、プロジェクトの説明をするのに使われています。このガイドでは、PyPI によく合う形で README を作成するのを助け、あなたのパッケージの README が PyPI で表示されるようにします。

README ファイルを作成する#

Python プロジェクトにおける READMEファイルは、しばしば READMEREADME.txtREADME.rstREADME.md などと命名されます。

あなたの README を PyPI で正しく表示するためには、PyPI がサポートするマークアップ言語を選択する必要があります。 PyPI の README レンダラ としてサポートされているのは:

README ファイルについては、 setup.py ファイルと同様にプロジェクトのルートディレクトリに置くのが慣習になっています。

README にパッケージのメタデータを含ませる#

README の内容をパッケージの説明として引用させるには、典型的にはプロジェクトの setup.py ファイルに、プロジェクトの DescriptionDescription-Content-Type のふたつのメタデータを設定しておきましょう。

例えば、これらの値をパッケージの setup.py ファイルに設定するためには、 setup()long_descriptionlong_description_content_type を使ってください。

long_desctription には README ファイルの内容それ自体 (パスではなく) を設定してください。 long_description_content_type には、README ファイルのマークアップの型を受け入れ可能な Content-Type 風の書き方、すなわち text/plaintext/x-rst (reStructuredText の場合) ・ text/markdown から選んで設定してください。

注釈

プロジェクトの説明を GitHub 方言のマークダウンで書くのであれば、以下のツールを更新しておくことを忘れないでください:

python3 -m pip install --user --upgrade setuptools wheel twine
py -m pip install --user --upgrade setuptools wheel twine

各ツールは少なくとも次のバージョンでなければなりません:

  • setuptools >= 38.6.0

  • wheel >= 0.31.0

  • twine >= 1.11.0

プロジェクトの配布物パッケージをアップロードする時は twine を使うことを推奨します。

twine upload dist/*

例えば、この setup.py ファイルでは、 README.md の内容を読み取って long_description としていて、マークアップ方式は GitHub 方言のマークダウンを指定しています:

from setuptools import setup

# read the contents of your README file
from pathlib import Path
this_directory = Path(__file__).parent
long_description = (this_directory / "README.md").read_text()

setup(
    name='an_example_package',
    # other arguments omitted
    long_description=long_description,
    long_description_content_type='text/markdown'
)

reStructuredText マークアップを検証する#

README を reStructuredText で書いている場合、無効なマークアップがひとつでもあると描画できないので、PyPI 上では README の生のソースコードを表示するだけになってしまいます。

ディレクティブロール (例えば ":py:func:`getattr`" や ":ref:`my-reference-label`") のように docstrings 内で使われる Sphinx 拡張はこの場所では使用を許されず、 Error: テキストロール "py:func" が見つかりません。<Unknown interpreted text role "py:func".> といったエラーメッセージを出すことになります。

README ファイルのマークアップに関するエラーをアップロードする前に確認するには、次のようにします:

  1. 最新版の twine をインストールします; バージョン 1.12.0 またはそれ以上のものが必須です:

    python3 -m pip install --upgrade twine
    
    py -m pip install --upgrade twine
    
  2. あなたのプロジェクトをパッケージする に記述されているように、プロジェクトの sdist と wheel をビルドします。

  3. sdist と wheel に対して twine check を実行します:

    twine check dist/*
    

    このコマンドは README のレンダリングに関する問題があれば報告するでしょう。マークアップのレンダリングに問題がなければ、 配布物を検査しています FILENAME: 合格 <Checking distribution FILENAME: Passed> と出力するでしょう。