Twineを使ったPyPI/TestPyPIへのパッケージ更新

By raimon, 2018-03-29(木), in category Python

Python

setupスクリプトからTwineへの移行

Migrating to PyPI.orgで案内されている通り python setup.py registerpython setup.py upload といったsetupスクリプトを使って登録・更新しようとするとサーバー側から410 Errorが応答されるようになった。

上記の移行ガイドにおいて、Twineでの設定方法が案内されている。

PyPIの練習用サーバーであるTestPyPIでも、Twineで更新できるよう、移行しておくのが良いだろう。

PyPI/TestPyPIへのTwineからの更新用設定

Twineを導入していなかれば、自身のvenv環境などにインストールする。

$ pip install twine

HOMEディレクトリにはTwineから参照される設定を ~/.pypirc に書いておくと便利である。

[distutils]
index-servers=
    pypi
    pypitest

[pypi]
username: yourusername
password: yourpassword

[pypitest]
repository: https://test.pypi.org/legacy/
username: yourusername
password: yourpassword

上記設定ファイルのポイントとしては、

Pythonパッケージ作者にとって、PyPI/TestPyPIへのパッケージ更新は日常的な作業の一つであるため、makeやFabricといったタスクランナーに定型タスクとして登録しておくと忘れなくて良い。以下に Makefile での登録例を示す。

.PHONY: deploy
deploy: build
    twine upload dist/*

.PHONY: test-deploy
test-deploy: build
    twine upload -r pypitest dist/*

.PHONY: build
build:
    python setup.py sdist bdist_wheel

TestPyPIの時だけTwineの -r/--repository オプションを指定している点がポイントである。

これで、日常的なパッケージ更新作業は、

# TestPyPIへのパッケージ更新
$ make test-deploy

# PyPIへのパッケージ更新
$ make deploy

に集約できた。

まとめ

2018年現在、PyPI/TestPyPIへのパッケージ登録・更新にはTwineを利用する。

Twine移行以前の情報(2015年時点)については、このブログの過去エントリPythonプロフェッショナルプログラミング 第2版』のWebアプリケーション課題をGitHubで作りTest PyPIで公開するも参考にされたい。