3

我正在使用一个包,__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直接将路径附加到该包的模块,当我尝试导入它时会抛出该模块不存在的错误。

4

2 回答 2

1

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

import sys
sys.path.extend(test_package.__path__)
import test_me
print(test_me.STATIC)
于 2019-01-02T21:56:19.400 回答
0

您需要通过 导入它们__init__.py,因此将其内容更改为:

from .test_me import test_me, STATIC

现在以下将起作用:

import test_package
print(test_package.STATIC)
于 2019-01-02T16:31:45.080 回答