我可能会丢失一些显而易见的东西,但是无论如何:
当您像os在python中那样导入软件包时,您可以直接使用任何子模块/子软件包。例如,这有效:
os
>>> import os >>> os.path.abspath(...)
但是我有自己的软件包,其结构如下:
FooPackage/ __init__.py foo.py
并且这里相同的逻辑不起作用:
>>> import FooPackage >>> FooPackage.foo AttributeError: 'module' object has no attribute 'foo'
我究竟做错了什么?
您需要导入子模块:
import FooPackage.foo
您正在寻找的foo是FooPackage/__init__.py。您可以通过将import FooPackage.foo as foo(或from . import foo)放入来解决它FooPackage/__init__.py,然后Python就能在其中找到foo。但我建议使用我的第一个建议。
foo
FooPackage/__init__.py
import FooPackage.foo as foo
from . import foo