Python3相对导入

时间:2017-12-11 01:50:57

标签: python python-3.x relative-import

我已经厌倦了阅读相对进口的一次性使用案例,所以我想我要问一个如何从目录上面进行相对导入的例子 bellow ,用于导入模块函数和类对象。

目录结构:

.
├── lib
│   ├── __init__.py
│   └── bar.py
└── src
    ├── main.py
    └── srclib
        ├── __init__.py
        └── foo.py

bar.py

def BarFunc():
        print("src Bar function")

class BarClass():
        def __inti__(self):
                print("src Bar Class")
        def test(self):
                print("BarClass working")

foo.py

def FooFunction():
        print("srclib Foo function")

class FooClass():
        def __init__(self):
                print("srclib Foo Class")
        def test(self):
                print("FooClass working")

问题:python 3中为这些用例导入的语法是什么?

main.py

# What is the syntax to import in python 3?

# I want to be able to call FooFunc()
foo.FooFunc()

# I want to be able to create a FooClass() object
foo_class = foo.FooClass()
foo_class.test()

# I want to be able to call FooFunc()
bar.BarFunc()

# I want to be able to create a BarClass() object
bar_class = bar.BarClass()
bar_class.test()

1 个答案:

答案 0 :(得分:0)

这一切都取决于你从哪里开始python翻译。在您的情况下,我建议您在进行以下更改时从项目的根目录启动解释器:

在档案src/srclib/__init__.py中添加:

from . import foo

执行此操作的原因是在__init__.py文件中明确说明要从模块导入的内容。

main.py文件中,添加以下内容:

from lib import bar
from src.srclib import foo

希望这有帮助!