首页 > 解决方案 > Python - 从未通过 __init__.py 导入的包中访问模块?

问题描述

我正在使用一个包,__init__.py它只从模块中导入一个变量,但整个模块本身没有暴露。有没有办法访问该模块?

让我们看一下这种情况:

整包:

test_package/
├── __init__.py
└── test_me.py

现在内容:

__init__.py

from .test_me import test_me

test_me.py

STATIC = 'static'


class Test:
    pass


test_me = Test()

现在,如果我导入 package test_package。我只能访问变量test_me,它是Test类的一个实例。虽然我不能访问STATIC变量,因为模块本身没有暴露。

在这种情况下,有没有办法访问test_me模块而不仅仅是其中一个变量?

PS如果我使用sys直接将路径附加到该包的模块,当我尝试导入它时会抛出该模块不存在的错误。

标签: pythonpython-3.xpython-importname-collision

解决方案


如果将包目录添加到路径中,Python 可以导入该目录中的任何文件,就好像它本身是一个模块一样。

import sys
sys.path.extend(test_package.__path__)
import test_me
print(test_me.STATIC)

推荐阅读