如何在 Python 中为文件夹(模块)添加别名,以像使用 import corerec.UF_Engine 的类一样使用它?

问题描述 投票:0回答:1

我正在开发一个 Python 项目,我的 corerec.engines 目录中有一个文件夹 (unionizedFilterEngine),其中包含一个类 (unionizedFilterEngine)。我想以这样的方式导入该类,以便可以将其与更简单的别名一起使用,例如 corerec.UF_Engine,而不是完整路径 corerec.engines.unionizedFilterEngine。

这是我项目的当前结构:

corerec/ ├── init.py
├── 发动机/ │ ├── init.py
│ ├── unionizedFilterEngine/ │ │ ├── init.py
│ │ ├── filterEngine.py # 包含类

unionizedFilterEngine

当前代码示例:

filterEngine.py:

unionizedFilterEngine 类: def init(自身): print("Unionized Filter Engine 已初始化!")

def context(self):
    return "Context method called!"

我想将 unionizedFilterEngine 文件夹/模块别名为 UF_Engine,以便我可以像这样导入它:

导入 corerec.UF_Engine

然后像这样使用它:

UF_Engine.context()

我已经尝试设置 init.py 文件,但仍然无法使其工作。谁能帮我弄清楚如何正确地为文件夹/模块添加别名?

标签:python、导入、别名、模块、类

我尝试在 corerec.engine 中定义 UF_Egnie 别名,之前也在 corerec 的 init 中定义,但它不起作用...

我期待: corerec.UF_Engnie

比我可以使用之后: 导入 corerec.UF_Engnie 作为 uf uf.blahblah()

python class import module pointer-aliasing
1个回答
0
投票

要实现您想要的别名,您可以修改项目中的

__init__.py
文件来创建所需的别名。具体方法如下:

  1. corerec/engines/unionizedFilterEngine/init.py:

    from .filterEngine import unionizedFilterEngine
    
  2. corerec/engines/init.py

    from .unionizedFilterEngine import unionizedFilterEngine as UF_Engine
    
  3. corerec/init.py:

    from .engines import UF_Engine
    

通过这些更改,您应该能够使用别名

unionizedFilterEngine
导入
corerec.UF_Engine
类,如下所示:

import corerec.UF_Engine

engine = corerec.UF_Engine()
print(engine.context())

此设置确保可以通过别名

unionizedFilterEngine
访问
corerec.UF_Engine
类,从而使您的导入更清晰、更直观。

© www.soinside.com 2019 - 2024. All rights reserved.