【问题标题】:Import all libraries from Python package in pantsbuild从pantsbuild中的Python包导入所有库
【发布时间】:2021-05-19 11:25:15
【问题描述】:

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

├── 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 *

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

【问题讨论】:

  • 现在正在考虑这个......我可能只导入 init,我会尝试并报告。
  • (-‸ლ) 效果很好......好吧希望这可以帮助其他有需要的人。

标签: python-3.x build package pants


【解决方案1】:

导入 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多