.pypirc
ファイル#
.pypirc
ファイルを使うと、 パッケージインデックス (ここでは "リポジトリ" と呼びます) 向けの設定を定義しておけば、 twine や flit でパッケージをアップロードする際に URL ・ユーザ名・パスワードなどの入力を省くことができます。
(元々は distutils パッケージで定義された) フォーマットは:
[distutils]
index-servers =
first-repository
second-repository
[first-repository]
repository = <first-repository URL>
username = <first-repository username>
password = <first-repository password>
[second-repository]
repository = <second-repository URL>
username = <second-repository username>
password = <second-repository password>
distutils
の節では、リポジトリを説明するようなすべての節の名前を列挙する index-servers
フィールドを定義しています。
リポジトリを記述する各節では、3個のフィールドを定義しています:
repository
: リポジトリの URL。username
: リポジトリで登録済みのユーザ名。password
: ユーザ名を認証するために使われるパスワード。
警告
あなたのパスワードが平文で保存されることに注意してください。より良いセキュリティのために キーリング ・環境変数での設定・コマンドラインでのパスワード供給のような代替策を検討してください。
そうでなければ、 .pypirc
のパーミッションを設定して、自分だけが閲覧や修正を行えるようにしてください。例えば、 Linux や macOS では次のようにします:
chmod 600 ~/.pypirc
共通の設定#
注釈
これらの例は twine に当てはまります。他のプロジェクト (例えば flit) でも .pypirc
ファイルを利用しますが、デフォルトの値が異なります。もっと詳しい情報や使い方の指南については、それぞれのプロジェクトの説明文書を参照してください。
Twine のデフォルト設定は、 PyPI と TestPyPI のリポジトリ節を含んだ .pypirc
を真似ています:
[distutils]
index-servers =
pypi
testpypi
[pypi]
repository = https://upload.pypi.org/legacy/
[testpypi]
repository = https://test.pypi.org/legacy/
Twine は、 $HOME/.pypirc
からの設定に対して、コマンドラインや環境変数といった追加の設定をデフォルト設定に追加するでしょう。
PyPI トークンを使う#
自分の PyPI 用 API トークン を設定するには、次のような $HOME/.pypirc
を作れば良いでしょう:
[pypi]
username = __token__
password = <PyPI token>
TestPyPI 用には、Test PyPI アカウントで作成した APIトークンを使った [testpypi]
節を追加してください。
別のパッケージインデックスを使う#
追加のリポジトリの設定を行うには、 index-servers
フィールドにそのリポジトリの名前が含まれるように再定義する必要があるでしょう。PyPI と TestPyPI とプライベートなリポジトリの設定をした $HOME/.pypirc
の完全な例を示します:
[distutils]
index-servers =
pypi
testpypi
private-repository
[pypi]
username = __token__
password = <PyPI token>
[testpypi]
username = __token__
password = <TestPyPI token>
[private-repository]
repository = <private-repository URL>
username = <private-repository username>
password = <private-repository password>
警告
password
フィールドを使う代わりに、 (Twineによってインストールされる) キーリング を使って API トークンやパスワードを安全に保存することを検討してください:
keyring set https://upload.pypi.org/legacy/ __token__
keyring set https://test.pypi.org/legacy/ __token__
keyring set <private-repository URL> <private-repository username>