Bazel: установите зависимость python для genrule

Я пишу макрос Bazel для загрузки колес Python в PyPI. Чтобы загрузить файл .whl в PyPI, я вызываю twine в качестве последнего шага моего макроса. Twine — это пакет Python, и похоже, что его нужно устанавливать отдельно. Однако я хочу, чтобы моя сборка была герметичной, поэтому я хотел бы, чтобы она устанавливалась системой сборки, и желательно не в системный питон или текущую виртуальную среду, которая может быть активирована на машине пользователя. Есть ли способ сделать это? Я пытался указать его как зависимость для своего genrule, но у него нет параметра deps, или как зависимость для моего этапа py_wheel, но тогда шпагат по-прежнему был недоступен для этапа загрузки. Есть ли хороший способ сделать это?

Вот призыв к рассматриваемому genrule:

    native.genrule(
        name = name + "_upload",
        srcs = [":" + short_name + "_wheel"],
        outs = [short_name + "_twine_upload.log"],
        cmd = "twine upload --disable-progress-bar --skip-existing $(SRCS) -u ........",
        visibility = ["//visibility:public"],
#        deps = [requirement("twine")]
    )
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
0
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чего вам не хватает, так это twine в исполняемой форме. rules_python для этого есть механизм:

load("@my_pip_install//:requirements.bzl", "entry_point")

alias(
    name = "twine",
    actual = entry_point("twine"),
)

Теперь это генерирует «двоичный файл», который вы можете запустить с помощью bazel run или передать в свой genrule().

Другие вопросы по теме