如何在 python 的包中正确导入和使用 类

How do I correctly import and use a classes inside of a package in python

我正在尝试在包中正确使用 import,在阅读了几个答案后,我不确定我是否做对了。对我来说还是有点迷惑

假设我有以下文件结构,运行 main.py 有效但我无法编译 foo.py:

ModuleNotFoundError: No module named 'test_lib'

是否有更好的方法来创建所需的依赖项?

main.py
test_lib
├── __init__.py (empty)
├── foo.py
└── bar.py

与 :

main.py

from test_lib.foo import foo

if __name__ == '__main__':
    t = foo()
    t.f_foo()

foo.py

from test_lib.bar import bar

class foo:
    def __init__(self):
        self.bar = bar()
    def f_foo(self):

        print(self.bar.f_bar('Foo'))

bar.py

class bar:
    def f_bar(self,inp):
        return f'bar {inp}'

你做得对。

执行包中的随机文件并不常见,但有一个简单的方法:

python -m test_lib.foo

这样 sys.path 与 运行 main.py 相同,因此它找到 test_lib.

当运行python test_lib/foo.pysys.path包含test_lib的根,其中没有test_lib,导致ImportError .

您从 test_lib.foo 导入 foo.py 肯定会抛出 ModuleNotErrorFound ,这是因为您从 test_lib.foo 导入 foo.py 这显然是错误的。

看看下面这个,你会发现哪里做错了

test_lib-->foo.py-->foo.py

试试,

from test_lib import foo

这可能会解决错误,如果不能,请检查您的路径,然后重试。