Python导入保留包名称

时间:2017-06-26 15:16:20

标签: python

我想要做的是将模块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")

2 个答案:

答案 0 :(得分:1)

我想我找到了答案。

__init__.py的内容应该是:

from . import foo

然后import testPkgfoo导入testPkg.foo

答案 1 :(得分:0)

嗯......也许import testPkg.foo as testPkgFoo并使用testPkgFoo.bar()来调用它,或者它可能是__init__.py文件。将第一行更改为foo.py