Файл сборки Bazel загружает несколько зависимостей
У меня есть репозиторий Python, содержащий два файла требований. В моем
WORKSPACE
файл, я импортировал обе зависимости.
требования-1.txt :
numpy
требования-2.txt :
scipy
РАБОЧАЯ ОБЛАСТЬ :
load("@rules_python//python:pip.bzl", "pip_install")
pip_install(
name = "deps_1",
requirements = "//:requirements-1.txt",
)
pip_install(
name = "deps_2",
requirements = "//folder2:requirements-2.txt",
)
У меня есть файл BUILD, подобный этому:
load("@rules_python//python:defs.bzl", "py_library")
load("@deps_1//:requirements.bzl", "requirement")
load("@deps_2//:requirements.bzl", "requirement")
py_library(
name = "test",
srcs = ["test.py"],
deps = [
requirement("numpy"),
requirement("scipy"),
],
)
Сборка не может импортировать numpy
no such package '@deps//pypi__numpy': BUILD file not found in directory 'pypi__numpy' of external repository @deps2. Add a BUILD file to a directory to mark it as a package.
Как загрузить две зависимости в один файл BUILD?
1 ответ
В общем, вы можете сделать это, загрузив два
requirement
с разными именами. Как это:
load("@deps_1//:requirements.bzl", deps_1_requirement = "requirement")
load("@deps_2//:requirements.bzl", deps_2_requirement = "requirement")
Затем вы можете использовать
deps_1_requirement("numpy")
а также
deps_2_requirement("scipy")
.
Однако с этими двумя конкретными библиотеками scipy зависит от numpy. Если вы загрузите их оба, вы получите две разные копии numpy. Если они оба одной и той же версии, это, вероятно, сработает. Если это разные версии, вы можете столкнуться со странными проблемами. Я думаю, вы можете просто удалить numpy из списка, и ваш код должен иметь возможность импортировать единственную версию, которую вводит pip/rules_python, потому что это зависимость от scipy.