如何删除py_library导入中的文件夹名称?

梅丽·耶尔德兹

我在理解bazel的python导入目录时遇到问题。给定这样的树:

.
├── WORKSPACE
├── python_lib_a/
│   ├── BUILD
│   └── src/
│       └── package1/
│           └── folder1/
│               └── some_file.py
└── python_binary_a/
    ├── BUILD
    └── src/
        └── package1/
            └── folder2/
                └── python_binary.py

python_binary.py文件如何some_file.py像这样导入文件:

from package1.folder1.some_file import SomeClass

我是Bazel的新手,所以我的Google查询可能是错误的。我找不到删除/剥离文件夹名称的任何示例。如有必要,我愿意编写自定义规则。类似于插件的东西,可以在编译过程中更改文件夹。

编辑:除了可接受的答案,我必须将其添加到package1/__init__.py库和二进制src文件夹中的文件中:

import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)
自动化测试仪

可能有一种方法可以执行此操作,但绝对可行的方法是移动BUILD文件的位置

.
├── WORKSPACE
├── python_lib_a/
│   └── src/
│       ├── BUILD
│       └── package1/
│           └── folder1/
│               └── some_file.py
└── python_binary_a/
    └── src/
        ├── BUILD
        └── package1/
            └── folder2/
                └── python_binary.py

然后在python_lib_a里面像下面这样从//python_lib_a/src:package1

py_library(
    name = "package1",
    srcs = glob(
        ["package1**/**/*.py"],
    ),
    imports = ["."],
    visibility = ["//visibility:public"],
)

然后在另一个

py_library(
    name = "package2",
    srcs = glob(
        ["package1**/**/*.py"],
    ),
    imports = ["."],
    visibility = ["//visibility:public"],
    deps = [ '//python_lib_a/src:package1']
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章