我想要做的是将模块foo
导入为testPkg.foo
,而不仅仅是foo
,因此testPkg.foo.bar()
可以正常工作。
但是,当我执行import testPkg
时,它不会导入包中的模块,而from testPkg import *
会执行。是否可以保留包名testPkg.
?
例如,目录如下所示:
test.py
testPkg/
__init__.py
foo.py
test.py
的内容是:
import testPkg
testPkg.foo.bar()
当我执行test.py
时,会生成AttributeError
:
Traceback (most recent call last):
File "test.py", line 3, in <module>
testPkg.foo.bar()
AttributeError: 'module' object has no attribute 'foo'
__init__.py
的内容是:
__all__ = ["foo"]
foo.py
的内容是:
def bar():
print("bar")
print("foo")
答案 0 :(得分:1)
我想我找到了答案。
__init__.py
的内容应该是:
from . import foo
然后import testPkg
将foo
导入testPkg.foo
。
答案 1 :(得分:0)
嗯......也许import testPkg.foo as testPkgFoo
并使用testPkgFoo.bar()
来调用它,或者它可能是__init__.py
文件。将第一行更改为foo.py
。