在python中,如何使嵌套模块看起来不嵌套在import语句中?

时间:2021-07-12 22:00:11

标签: python python-import

在 python 中,如何使嵌套模块 package.package.module 可作为导入语句的 package.module 访问?

我有这样的文件结构:

script.py           # this is where I want to import nested module
library/            # git submodule of python package
    __init__.py
    setup.py
    library/        # actual (nested) python package to import
        __init__.py
        module.py

我添加了 library/__init__.py 以便 python 可以从根目录访问路径 library/library/library/__init__.py 的内容是:

# /library/__init__.py
from .library import *

也就是说,将嵌套 library/library 包中的所有内容都带入父 library/ 命名空间。

主要可执行文件script.py的内容是:

# script.py
from library.module import something
# I do not want:
# from library.library.module import something

哪个给出了错误:

ModuleNotFoundError: No module named 'library.module'

但是当我将 script.py 的内容更改为:

# script.py
from library import module

它有效。为什么在这种情况下?我没有收到关于未找到模块的错误。

如何使嵌套模块从外部显示在父级?

我知道我可以将 library/ 添加到 sys.path 中的 script.py。但是,这对 linting 没有帮助,并且还需要在 library 模块之外进行代码更改。

0 个答案:

没有答案
相关问题