0

我想将我的模型/源目录中的所有资源导入到裤子中的另一个目标中,构建我的根/模型/源内容:

├── base.py
├── BUILD
├── design.py
├── email.py
├── __init__.py
└── project_management.py

我的构建文件的内容如下:

python_library(
    name="base",
    sources=["base.py"],
    dependencies=["root/models/tokens/__init__.py:__init__"]
)

python_library(
    name="design",
    sources=["design.py"],
    dependencies=[":base"]
)

python_library(
    name="email",
    sources=["email.py"],
    dependencies=[":base"]
)

python_library(
    name="project_management",
    sources=["project_management.py"],
    dependencies=[
        ":base",
        "root/models/tokens/__init__.py:__init__"
    ]
)

python_library(
    name="__init__",
    sources=["__init__.py"],
    dependencies=[
        ":base",
        ":design",
        ":email",
        ":project_management"
    ]
)

现在在另一个目标中,我有一个

from root.models.sources import *

我将如何设置这个其他目标的依赖关系以导入模型/源中的所有库?ps 我知道使用 * 不是最好的,但这是最简单的形式。此外,init是一个工厂。

4

1 回答 1

0

只要它是引用包中所有其他文件的工厂,就导入init 。例如:

from root.models.sources.base import Source
from root.models.sources.design import DesignSource
from root.models.sources.email import EmailSource
from root.models.sources.project_management import \
    ProjectManagementSource


def SourceFactory(source: str = "default"):
    sources = {
        "default": Source,
        "foo1": ProjectManagementSource,
        "foo2": ProjectManagementSource,
        "foo3": ProjectManagementSource,
        "foo4": ProjectManagementSource,
        "foo5": ProjectManagementSource,
        "foo6": ProjectManagementSource,
        "foo7": ProjectManagementSource,
        "foo8": EmailSource,
        "foo9": DesignSource,
    }

    return sources[source] if source in sources.keys() else Source
于 2021-02-16T15:36:11.043 回答