Чтобы упростить работу нашим пользователям, мы хотим, чтобы инструмент работал на этих виртуальных машинах (как часть самого создания виртуальных машин).
Виртуальные машины имеют доступ к экземпляру 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/*
Код: Выделить всё
$1uv создает файлы .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/"
Код: Выделить всё
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).
Как мне этого добиться?
Подробнее здесь: https://stackoverflow.com/questions/798 ... uv-publish
Мобильная версия