2026, Jan 05 12:01

Настройка uv для Artifactory: приватный индекс и аутентификация

Как настроить uv для приватного индекса Artifactory: разовый запуск с --index-url и логином, либо конфигурация в pyproject.toml плюс переменные окружения.

Когда источником Python‑пакетов служит приватный репозиторий Artifactory, простая команда uv run может споткнуться, если индекс требует аутентификации. Задача проста: запускать uv с Artifactory как альтернативным индексом пакетов и не сталкиваться с ошибками разрешения зависимостей из‑за отсутствующих учетных данных.

Как воспроизвести проблему

Обычно попытка выглядит безобидно, но если реестр требует авторизацию, так не сработает:

uv run runner.py --index-url https://artifactory.mycompany.com/artifactory/repo/simple

Команда указывает uv на нужный хост, но учетные данные не передаются, поэтому в среде с требуемой аутентификацией разрешение зависимостей не выполняется.

Что происходит

Используется не публичный индекс по умолчанию, а закрытый, требующий аутентификации. Значит, uv нужны явные учетные данные для доступа к Artifactory. Их можно передать прямо в командной строке для разового запуска или настроить на уровне проекта для повторяющихся сценариев.

Известно, что uv также работает с Artifactory от JFrog.

Официальные инструкции довольно лаконичны, поэтому ниже — два конкретных способа все настроить.

Решение: разовый запуск

Для быстрых запусков передайте учетные данные прямо в URL индекса. Это сразу решит задачу аутентификации для конкретного выполнения.

uv run runner.py --index-url https://<username>:<token-or-password>@<artifactory-repo-url>

Например:

uv run runner.py --index-url https://myuser:mypassword@artifactory.mycompany.com/artifactory/repo/simple

Такой подход рассчитан на разовые случаи и не требует менять файлы проекта.

Решение: настройка на уровне проекта

Для постоянной работы сохраните URL индекса в pyproject.toml, а учетные данные передавайте через переменные окружения. Так URL останется в версионируемой конфигурации, а секреты — вне файла.

pyproject.toml

[[tool.uv.index]]
name = "internal"
url = "https://artifactory.mycompany.com/artifactory/repo/simple"

Затем экспортируйте переменные окружения в оболочке (их можно добавить в профиль, чтобы они сохранялись между сессиями):

export UV_INDEX_PRIVATE_REGISTRY_USERNAME="myusername"
export UV_INDEX_PRIVATE_REGISTRY_PASSWORD="mypassword"

После этого uv сможет аутентифицироваться в указанном альтернативном индексе при каждом запуске проекта.

Почему это важно

Команды часто работают с внутренними реестрами пакетов. Надёжный способ направить uv на Artifactory и стабильно проходить аутентификацию снижает трение в разработке и делает процесс предсказуемым. Поскольку официальные заметки коротки, понятная и минимальная настройка избавляет от догадок.

Итоги

Если нужен быстрый разовый запуск, передавайте учетные данные прямо в --index-url. Если планируете пользоваться Artifactory регулярно, пропишите индекс в pyproject.toml и задайте учетные данные через переменные UV_INDEX_PRIVATE_REGISTRY_USERNAME и UV_INDEX_PRIVATE_REGISTRY_PASSWORD. В обоих случаях uv будет без сюрпризов разрешать зависимости из вашего аутентифицированного индекса Artifactory.