Вопрос или проблема
Я пытаюсь создать проект uv
, который использует --extra-index-url
с Google Cloud Artifact Registry. Согласно документации uv, это должно быть возможно. Я использую uv 0.4.18
. Вот что я пробовал до сих пор:
gcloud auth application-default login --project ${PROJECT_ID}
uv venv
source .venv/bin/activate
uv pip install keyring keyrings.google-artifactregistry-auth
uv pip install --keyring-provider subprocess ${MY_PACKAGE} --extra-index-url https://${REGION}-python.pkg.dev/${PROJECT_ID}/${REPOSITORY_ID}/simple
Однако возникает ошибка, указывающая на то, что мой пакет не может быть найден. Интересно, что при использовании стандартного Python я могу установить свой приватный пакет без каких-либо проблем. Вот работающий код:
gcloud auth application-default login --project ${PROJECT_ID}
python -m venv .venv
source .venv/bin/activate
pip install keyring keyrings.google-artifactregistry-auth
pip install ${MY_PACKAGE} --extra-index-url https://${REGION}-python.pkg.dev/${PROJECT_ID}/${REPOSITORY_ID}/simple
Похоже, что другие сталкивались с этой проблемой ранее, как упоминается в закрытой проблеме на GitHub. Столкнулся ли кто-то еще с этой проблемой или нашел обходной путь? Любая помощь будет оценена!
Ответ или решение
Проблема, с которой вы столкнулись при использовании --extra-index-url
в проекте uv
, связана с тем, как uv
управляет зависимостями и интеграцией с внешними индексами, такими как Google Cloud Artifact Registry. Давайте разберем основные шаги и предложим решение.
-
Проверка конфигурации: Убедитесь, что проект и репозиторий Google Cloud Artifact Registry правильно настроены, и у вас есть необходимые разрешения для доступа к ним.
-
Ошибка
uv
:uv
может не учитывать внешний индекс так же, как стандартныйpip
, особенно если речь идет о системе аутентификации и дополнительной очистке перед установками. Вам может понадобиться явно указать ключи аутентификации для доступа к вашему артфакту. -
Использование
--extra-index-url
: Рекомендуется использовать полную команду установки пакета без других модификаторов, и в самом начале добавлять аутентификацию. Пример команды может выглядеть так:gcloud auth application-default login --project ${PROJECT_ID} uv venv source .venv/bin/activate uv pip install keyring keyrings.google-artifactregistry-auth uv pip install --extra-index-url https://pypi.org/simple ${MY_PACKAGE} || uv pip install ${MY_PACKAGE} --extra-index-url https://${REGION}-python.pkg.dev/${PROJECT_ID}/${REPOSITORY_ID}/simple
-
Использование переменной окружения: Может быть полезным установить переменную окружения для ключа аутентификации
GOOGLE_APPLICATION_CREDENTIALS
, указывающую на файл учетных данных вашего сервиса, чтобы избежать проблем с аутентификацией. -
Проверка SSL через
pip
: Иногда проблема может заключаться в проверке SSL. Если вы используете самоподписанные сертификаты, попробуйте добавить параметр--trusted-host
к командам установки, чтобы игнорировать проверки:uv pip install ${MY_PACKAGE} --extra-index-url https://${REGION}-python.pkg.dev/${PROJECT_ID}/${REPOSITORY_ID}/simple --trusted-host ${REGION}-python.pkg.dev
-
Обновление
uv
иpip
: Убедитесь, что вы используете актуальные версииuv
иpip
, так как в последних версиях могут быть исправлены некоторые ошибки и добавлены новые возможности. -
Проверка логов: Если ошибка все еще присутствует, проверьте журналы выполнения команд
uv
для получения дополнительной информации о том, почему пакет не может быть найден.
Если вы предприняли все описанные шаги и проблема не решилась, рекомендую создать новый_issue на GitHub-репозитории проекта uv
с полным описанием ваших действий и ошибок, чтобы разработчики могли обратить внимание на вашу ситуацию.