Python 告诉bazel将.so文件复制到py_库输出文件夹中?

Python 告诉bazel将.so文件复制到py_库输出文件夹中?,python,bazel,Python,Bazel,我有一个py_库,它依赖于*.so文件。我有一个创建.so文件的cc_库规则。我将cc_库的名称添加到py_库的数据字段中,但是bazel没有将*.so的副本放入输出文件夹中 cc_binary( name = "_python_api.so", linkshared = True, visibility = ["//visibility:public"], deps = [ "...", ], ) py_library( nam

我有一个py_库,它依赖于*.so文件。我有一个创建.so文件的cc_库规则。我将cc_库的名称添加到py_库的数据字段中,但是bazel没有将*.so的副本放入输出文件夹中

cc_binary(
    name = "_python_api.so",
    linkshared = True,
    visibility = ["//visibility:public"],
    deps = [
        "...",
    ],
)

py_library(
    name = "python_api",
    visibility = ["//visibility:public"],
    imports = [
        "python_api",
    ],
    srcs = [
        "python_api/python_api.py"
    ],
    data = [
        ":_python_api.so",
    ],
)

py_binary(
    name = "python_api_example",
    srcs = [
        "python_api_example.py",
    ],
    deps = [
        ":python_api",
    ],
)
一切都编译正确。但是当我运行示例应用程序时,它说它找不到_python_api.so。我可以在输出文件夹中看到_python_api.so,只是与python_api.py不在同一文件夹中。如果我在与python_api.py相同的文件夹中创建一个到_python_api.so文件的符号链接,那么一切都可以正常工作


有没有办法告诉bazel这个so文件需要和python_api.py放在同一个文件夹中?

让我印象深刻的是,您将库定义为
cc_binary
。当将库构建为
cc_库
时,bazel的神奇包装python执行似乎能够从
数据
属性中找到(
import
)共享库。或者,至少我尝试了一个与您类似的小示例,其中提到了不同之处,并且它似乎在我的机器上按预期工作。:)