Python 包:导入子模块并重命名它?

Python Package: Import submodule and rename it?

提问人:Michael 提问时间:5/2/2023 更新时间:5/2/2023 访问量:27

问:

我正在创建一个具有以下布局的 python 包:timecode

timecode/
    __init__.py
    timecode.py
    timecoderange.py
    modes.py

timecode.py包含一个名为 的类。 包含 的类。 包含一个抽象类和几个子类 ( 和 ),这些子类旨在与 和 类一起使用。Timecodetimecoderange.pyTimecodeRangemodes.pyDropFrameNonDropFrameTimecodeTimecodeRange


当有人使用我的时间码库时,我希望他们能够导入这样的东西:

from timecode import Timecode, TimecodeRange, Modes

...以便它们可以引用该命名空间下的模式:Modes

tc = Timecode("01:00:00:00", mode=Modes.NonDropFrame())

所以这最终把我带到了我的问题:我如何将我的子模块作为(大写)引入?在我试过:modesModesM__init__.py

from . import modes as Modes

但这行不通。当我稍后尝试使用 时,我得到 .timecodefrom timecode import ModesModuleNotFoundError: No module named 'timecode.Modes'

python import 命名空间 git-submodules

评论

1赞 mkrieger1 5/2/2023
from . import modes as Modes应该是正确的,如果它不起作用,你有一个不同的问题。
0赞 mkrieger1 5/2/2023
你能确保你不会通过给它们不同的名称来混淆目录和模块吗?timecodetimecode.py
0赞 Michael 5/2/2023
@mkrieger1你知道吗,你是对的。我认为问题现在出在,我有.但是,如果我这样做,然后将其用作 ,那就有效了。所以我想我还有更多关于相对进口或其他东西的知识。timecode.pyfrom .Modes import NonDropFramefrom . import ModesModes.NonDropFrame

答: 暂无答案