微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bazel,如何将 C++ 内置的 Python 库添加到 Python 二进制文件中?

如何解决Bazel,如何将 C++ 内置的 Python 库添加到 Python 二进制文件中?

我有一个带有如下构建的 Python 绑定的 C++ 库,以及一个需要导入生成libperceptionPybind.so 的 Python 二进制文件

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")
    ],)

我看到 libperceptionPybind.so 已在我的 bazel-bin/pybind 文件夹中生成。如您所见,我尝试将 perceptionPybind 添加到 deps,但出现错误

//pybind:perceptionPybind' does not have mandatory providers: 'py' or 'PyInfo

解决方法

您可以使用 data 字段将动态库复制到 Python 二进制目标文件夹中:

py_binary(
    name = "TestPerceptionPybind",srcs = [ "TestPerceptionPybind.py" ],deps = [
        requirement("numpy"),requirement("torch")
    ],data = [
        ":PerceptionPybind",],)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。