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.