web-dev-qa-db-ja.com

プライベートPyPIのpip.confの資格情報

プライベートPyPIリポジトリがあります。 pip.confに似た.pypircに資格情報を保存する方法はありますか?

私が意味したのは。現在、.pypircでこのような設定を行うことができます:

[distutils]
index-servers = custom

[custom]
repository: https://pypi.example.com
username: johndoe
password: changeme

あなたがpip.confに入れることができると私が見つけたものから:

[global]
index = https://username:[email protected]/pypi
index-url = https://username:[email protected]/simple
cert = /etc/ssl/certs/ca-certificates.crt

しかし、ここには2つの問題があります。

  1. 各URLに対して、同じユーザー名とパスワードを指定する必要があります。
  2. ユーザー名とパスワードはログに表示されるようになります。これは、URLの一部であるためです。

URLの外にユーザー名とパスワードを保存する方法はありますか?

14
stolho

次のように、~/.netrcで使用するPipの資格情報を保存できます。

machine pypi.example.com
    login johndoe
    password changeme

Pipはhttps://pypi.example.comにアクセスするときにこれらの資格情報を使用しますが、ログに記録しません。インデックスサーバーを個別に指定する必要があります(質問のpip.confなど)。

~/.netrcpipを実行するユーザーが所有する必要があることに注意してください。他のユーザーも読み取り可能ではなりません。無効なファイルは黙って無視されます。次のように権限が正しいことを確認できます。

chown $USER ~/.netrc
chmod 0600 ~/.netrc

この許可チェックは、Python 3.4より前には適用されませんが、いずれにしても良い考えです。

内部的に、PipはHTTPリクエストを行うときに requests を使用します。要求は、標準ライブラリ netrc モジュールを使用してファイルを読み取るため、文字セットはASCIIサブセットに制限されます。

7
twm

ユーザー名/パスワードを環境変数として保存する方法、

export username=username
export password=password

そして、次のようにpip.confでそれらを参照します。

[global]
index = https://$username:[email protected]/pypi
index-url = https://$username:[email protected]/simple
cert = /etc/ssl/certs/ca-certificates.crt

Gitlab CIの秘密変数を使用して資格情報を保存します。 CIツールで同等のものを確認してください。

1
Ketan Vatsalya