Работа с PyPI
Proxy-репозиторий
Hosted-репозиторий
После создания репозиторий доступен по URL https://save.example.com/pypi/<project>/<repository>/. Simple-индекс — по /simple/, загрузка пакета (twine-совместимый POST) — на корень репозитория.
Настройка клиента
pip
- Linux/macOS:
~/.config/pip/pip.confили~/.pip/pip.conf - Windows:
%APPDATA%\pip\pip.ini - В virtualenv:
$VIRTUAL_ENV/pip.conf
Для CI/CD используйте robot-аккаунт: username = sa$<robot-name>, password = <api-key>. Конфиг pip.conf не меняется — отличается только значение username. Подробнее — в общем разделе Аутентификация.
poetry
В pyproject.toml:
Credentials передаются через poetry config:
pipenv
В Pipfile:
uv
Или в pyproject.toml:
Публикация (twine, hosted)
Загрузка пакетов в hosted-репозиторий — стандартным twine upload. URL-адрес публикации — корень репозитория (без /simple/).
Миграция URL репозитория
Сценарий использования: миграция репозитория PyPI с Nexus / Artifactory на CodeScoring.Save.
Параметры аутентификации (имя пользователя / пароль) и формат pip.conf сохраняются без изменений.
Устранение неполадок
Проверка простого индекса
Ответ — HTML-страница со списком ссылок на файлы пакета. Если страница пустая или возвращается 404 — пакет не закэширован и upstream его не вернул.
