I have a C++ Library with Python Bindings built as follows, and a Python Binary that needs to import the libPerceptionPybind.so that is generated.
package(default_visibility = ["//visibility:public"])
load("@pip_pybind//:requirements.bzl", "requirement")
cc_binary(
name = "PerceptionPybind",
srcs = ["PerceptionPybind.cpp"],
deps = [
"@pybind11",
"@libtorch_cpu//:torch_cpu",
],
linkshared = True,
)
py_binary(
name = "TestPerceptionPybind",
srcs = [ "TestPerceptionPybind.py" ],
deps = [
":PerceptionPybind"
requirement("numpy"),
requirement("torch")
],
)
I see that the libPerceptionPybind.so has been generated in my bazel-bin/pybind folder. I tried to add PerceptionPybind to the deps as you can see, but it gives an error:
//pybind:PerceptionPybind' does not have mandatory providers: 'py' or 'PyInfo
Advertisement
Answer
You can use the data field to have your dynamic library copied into the Python binary target folder:
py_binary(
name = "TestPerceptionPybind",
srcs = [ "TestPerceptionPybind.py" ],
deps = [
requirement("numpy"),
requirement("torch")
],
data = [
":PerceptionPybind",
],
)