Python-是否从未通过__init__.py导入的包访问模块?

时间:2019-01-02 16:14:41

标签: python python-3.x python-import

我使用的是一个包,该包与__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()

现在,如果我导入软件包test_package。我只能访问变量test_me,它是Test类的实例。尽管我无法访问STATIC变量,因为模块本身未公开。

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

P.S。如果我使用sys直接将路径附加到该软件包的模块,则会引发错误,即在我尝试导入该模块时该模块不存在。

2 个答案:

答案 0 :(得分:0)

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

from .test_me import test_me, STATIC

现在以下各项将起作用:

import test_package
print(test_package.STATIC)

答案 1 :(得分:0)

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

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