我使用的是一个包,该包与__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
直接将路径附加到该软件包的模块,则会引发错误,即在我尝试导入该模块时该模块不存在。
答案 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)