PyPIへのパッケージリリースあれこれ
このページは細分化したほうがよさそう
https://scrapbox.io/files/6046a7fbf52a51001cd340b2.png
バージョン
ナンバリング方法
独自
setup.pyのversion, package.__version__
リポジトリのタグ
パッケージバージョンをSCMタグから自動的に付ける
PyPIのアカウント権限
setup.pyのメタデータ
url:
urlはPyPIの「プロジェクトのリンク」に表示される
githubのURLを指定した場合自動的にGitHubと認識して、PyPIでStar/Fork数等が表示される
github以外のURLだと Homepage という表示とリンクになる
project_urls:
PyPIの「プロジェクトのリンク」にDocumentation、Repositoryなどを個別に複数表示する場合指定
https://gyazo.com/c54c1ca1cd6c6de2bbab2f7f874bd397
code:python
project_urls={
},
version:
前述のとおり
description:
パッケージの目的を表す短い1行の文章
PyPIの検索で一覧に表示される
pip search で一覧に表示される
Twitter等に流れる更新情報ツイートの文面に使われる
long_description:
長めの文章で、PyPIに表示される
reSTかmdで書けて、HTMLに変換されてPyPIに掲載される
mdの場合は long_description_content_type='text/markdown' も指定が必要
PyPI上でHTML変換されるため、文法エラーがあるとそのまま掲載される
そのような場合、このメタデータだけを差し替える方法は無いため新バージョンのリリースが必要
upload前にチェックする方法がある
python setup.py check -s -r: docutilsがインストールされていればreSTをチェック可能
でもOKな場合になにも表示しないし、これでチェックしてもHTMLが期待しない状態のこともある
reSTでもmarkdownでも使えるチェックツール。PyPA謹製 install_requires:
pip install で自動でインストールするため依存パッケージを列挙
requirements.txt とは目的が違います。
tests_require:
python setup.py test でインストールされるパッケージ
カレントディレクトリにファイルが色々置かれてしまうので、使わない
New in 41.5.0: Deprecated the test command.
python_requires:
pip install 実行時に利用するPythonバージョンに合わないパッケージのインストールを防ぐ
2.7, 3.4以上サポートの場合 python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*',!=3.3.*
classifiers:
PyPI上でカテゴリとして絞り込みに使える
追加はdistutils-sigに依頼する
license:
PyPIにカッコ書きで表示される
https://gyazo.com/3d557b92023d42911d5ddb101b4d1378
カッコの外は classifiersのライセンス指定している部分
アップロード
python setup.py upload はdeprecated
twine を使わないと新しいメタデータが設定されない
READMEとlong_descriptionとドキュメント
ReadTheDocs
バッジ
ここに欲しいバッジがだいたいある
GitHubのライセンス表示
LICENSE か LICESNE.txt を置くと内容を判定してライセンス表示をしてくれる
GitHubのファイル追加でLICENSEという名前を指定すると、内容を自動的に用意してくれる
テンプレート内の年数とチーム名を書き換えればOK
shields.ioのGitHubライセンス表示は、GitHubが認識できるLICENSEファイルを置いてないと機能しない
GitHubのテンプレート表示
ドキュメントからの参照
CONTRIBUTING.md はSphinxから参照するために .rst 版を用意すると良い
GitHubでは拡張子で自動的に解釈してレンダリングしてくれる
Sphinxからはincludeで取り込むとよい
README.rst