Bazel 构建文件加载多个依赖项
Bazel build file load multiple dependencies
我有一个 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 文件中加载两个依赖项?
一般来说,你可以通过加载不同名称的两个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.
的依赖项
我有一个 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 文件中加载两个依赖项?
一般来说,你可以通过加载不同名称的两个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.
的依赖项