Bazel 如何在py_库导入中剥离文件夹名称?

Bazel 如何在py_库导入中剥离文件夹名称?,bazel,bazel-rules,Bazel,Bazel Rules,我在理解bazel的python导入目录时遇到问题。 给这样一棵树: . ├── WORKSPACE ├── python_lib_a/ │ ├── BUILD │ └── src/ │ └── package1/ │ └── folder1/ │ └── some_file.py └── python_binary_a/ ├── BUILD └── src/ └── package1/

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

.
├── WORKSPACE
├── python_lib_a/
│   ├── BUILD
│   └── src/
│       └── package1/
│           └── folder1/
│               └── some_file.py
└── python_binary_a/
    ├── BUILD
    └── src/
        └── package1/
            └── folder2/
                └── python_binary.py
from package1.folder1.some_file import SomeClass
python\u binary.py
文件如何像这样导入
some\u file.py
文件:

.
├── WORKSPACE
├── python_lib_a/
│   ├── BUILD
│   └── src/
│       └── package1/
│           └── folder1/
│               └── some_file.py
└── python_binary_a/
    ├── BUILD
    └── src/
        └── package1/
            └── folder2/
                └── python_binary.py
from package1.folder1.some_file import SomeClass
我是Bazel的新手,所以我的google查询可能是错误的。我找不到任何删除/剥离文件夹名称的示例。 如果有必要,我愿意编写自定义规则。类似于在编译过程中更改文件夹的插件

编辑:除了接受的答案外,我还必须将此添加到库和二进制src文件夹中的
package1/\uuuu init\uuuuuuuy.py
文件中:

import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)

可能有一种方法可以做到这一点,但一种肯定有效的方法是移动
构建
文件的位置

.
├── WORKSPACE
├── python_lib_a/
│   └── src/
│       ├── BUILD
│       └── package1/
│           └── folder1/
│               └── some_file.py
└── python_binary_a/
    └── src/
        ├── BUILD
        └── package1/
            └── folder2/
                └── python_binary.py
然后在
python\u lib\u a
中,它将像下面一样从
//python\u lib\u 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']
)

我认为您可以在不移动构建文件的情况下执行此操作。然后您将有
imports=[“src”]
。查看生成的PYTHONPATH环境变量,问题似乎已经解决,但我仍然得到一个导入错误。这次它不是
没有名为package1的模块
,而是
没有名为package1的模块。folder2
。解决方法:
导入pkgutil__path=pkgutil.extend\U path(\uuuu path\uuuuuu,\uuuuuu name\uuuuu)