Учетные данные в pip.conf для частного PyPI - PullRequest
0 голосов
/ 22 мая 2018

У меня есть частный репозиторий 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:password@pypi.example.com/pypi
index-url = https://username:password@pypi.example.com/simple
cert = /etc/ssl/certs/ca-certificates.crt

Но здесь я вижу две проблемы:

  1. Для каждого URL вам потребуется каждый раз указывать одно и то же имя пользователя и пароль.
  2. Имя пользователя и пароль становятся видимыми в журналах, поскольку они являются частью URL-адреса.

Есть ли способ сохранить имя пользователя и пароль за пределами URL?

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Вы можете хранить учетные данные для использования Pip в ~/.netrc следующим образом:

machine pypi.example.com
    login johndoe
    password changeme

Pip будет использовать эти учетные данные при доступе к https://pypi.example.com, но не будет регистрировать их.Вы должны указать сервер индексирования отдельно (например, в pip.conf, как в вопросе).

Обратите внимание, что ~/.netrc должен принадлежать пользователю, pip выполняется как.Он также не должен быть доступен для чтения любому другому пользователю.Неверный файл игнорируется.Вы можете убедиться в правильности разрешений, например:

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

Эта проверка разрешений не применяется до Python 3.4, но в любом случае это хорошая идея.

Внутренне Pip использует запросы при выполнении запросов HTTP.запросы используют стандартную библиотеку netrc для чтения файла, поэтому набор символов ограничен подмножеством ASCII.

0 голосов
/ 06 января 2019

Как насчет сохранения имени пользователя / пароля в качестве переменных среды,

export username=username
export password=password

и ссылки на них в pip.conf, например, так:

[global]
index = https://$username:$password@pypi.example.com/pypi
index-url = https://$username:$password@pypi.example.com/simple
cert = /etc/ssl/certs/ca-certificates.crt

Я использую секретные переменные Gitlab CIдля хранения учетных данных.Проверьте эквивалент в вашем инструменте CI.

...