Установка пакетов Python с дополнительными функциями с помощью Bazel pip_parse
Я использую правила Python для Bazel для создания своих проектов на Python. Я использую pip_parse для установки пакетов pip, как описано в руководстве , но, похоже, это не работает для пакетов с дополнительными функциями.
Например, у меня есть следующая зависимость в файле requirements.txt:
ray[air,data,default]==2.1.0
РАБОЧАЯ СРЕДА
pip_parse(
name = "pip",
python_interpreter_target = interpreter,
requirements_lock = "//python:requirements.txt",
)
load("@pip//:requirements.bzl", "install_deps")
install_deps()
СТРОЙ.базел
load("@pip//:requirements.bzl", "requirement")
py_library(
name = "lib",
srcs = glob(["*.py"]),
deps = [
requirement("ray"),
],
)
py_binary(
name = "app",
srcs = ["app.py"],
deps = [":lib"],
)
Когда я запускаю py_binary сbazel run :app
Я вижу следующую ошибку:
File "/private/var/tmp/_bazel_andrii/.../app.py", line 2, in <module>
import ray
File "/private/var/tmp/_bazel_andrii/...pip_ray/site-packages/ray/__init__.py", line 171, in <module>
from ray import data # noqa: E402,F401
ImportError: cannot import name 'data' from partially initialized module 'ray' (most likely due to a circular import)
Если я изменю BUILD.bazel, чтобы использовать требование какrequirement("ray[data]")
Я вижу другую ошибку:
invalid label '@pip_ray[data]//:pkg' in element 1 of attribute 'deps' in 'py_library' rule: invalid repository name '@pip_ray[data]': workspace names may contain only A-Z, a-z, 0-9, '-', '_' and '.'
Как установить и использовать пакеты pip с дополнительными функциями?