Как заменить загрузку Twine на публикацию uv?Python

Программы на Python
Ответить
Anonymous
 Как заменить загрузку Twine на публикацию uv?

Сообщение Anonymous »

У нас есть внутренний инструмент, который распространялся пользователями, просто клонировавшими репозиторий git. Целью этого инструмента является настройка вновь созданных виртуальных машин для последующего тестирования нашего «реального» продукта.
Чтобы упростить работу нашим пользователям, мы хотим, чтобы инструмент работал на этих виртуальных машинах (как часть самого создания виртуальных машин).
Виртуальные машины имеют доступ к экземпляру Artifactory. Другие люди уже создали локальную папку PyPI в этом экземпляре. Поэтому, как только мой инструмент окажется в этой локальной папке PyPI, экземпляры виртуальной машины смогут легко установить его из этого места (эта часть работает хорошо, а не является частью моего вопроса).
Я написал сценарий, который использует шпагат для сборки, а затем загружает наш инструмент в эту папку Artifactory:

Код: Выделить всё

echo "Cleaning dist"
rm -rf ./dist/

echo "Building lastest version"
uv build

echo "Upload latest version"
python3 -m twine upload --repository-url https://whatever.com/artifactory/api/pypi/our-pypi-local -u $1 -p $2 dist/*
( и $2 — это имя пользователя и токен, передаваемые в качестве аргумента скрипту.)
uv создает файлы .whl и .tar.gz, а Twine загружает их. Работает нормально. Потом я понял, что uv поддерживает прямую публикацию. Поэтому я добавил

Код: Выделить всё

[[tool.uv.index]]
name = "artifactory"
url = "https://whatever.com/artifactory/api/pypi/our-pypi-local/"
publish-url = "https://whatever.com/artifactory/api/pypi/our-pypi-local/"
в наш файл pyproject.toml. Затем я изменил свой сценарий на:

Код: Выделить всё

echo "Cleaning dist"
rm -rf ./dist/

echo "Building lastest version"
uv build

echo "Upload latest version"
uv publish -v --index artifactory --username $1 --password $2
Но это уже нарушает этап сборки:

Код: Выделить всё

Building source distribution...
× Failed to build `/Users/me/repos/mytool`
├─▶ Failed to resolve requirements from `build-system.requires`
├─▶ No solution found when resolving: `setuptools>=64`
╰─▶ Because setuptools was not found in the package registry and you require setuptools>=64, we can conclude that your requirements are unsatisfiable.

hint: An index URL (https://whatever.com/artifactory/api/pypi/our-pypi-local/) could not be queried due to a lack of valid authentication credentials (401
Unauthorized).
Но: я не хочу, чтобы uv build что-либо запрашивал. Я хочу построить свой инструмент таким, каким он был раньше. А затем я просто хочу, чтобы uv отправил два файла в это удаленное место.
Как мне этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/798 ... uv-publish
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»