如何在 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.py
时sys.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
这可能会解决错误,如果不能,请检查您的路径,然后重试。
我正在尝试在包中正确使用 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.py
时sys.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
这可能会解决错误,如果不能,请检查您的路径,然后重试。