如何组织python的项目结构?

时间:2017-08-02 09:29:48

标签: python python-3.x

例如,我有一个名为myproject的项目。在myproject目录中。有other个子目录和main.py。在other子目录中,有a.pyb.py

a.py中的内容

import b

main.py中的内容是:

from other.a import *

问题出现在main.py,当我使用from other.a import *时,a.py的内容包含在main.py中,会引发错误,因为{ {1}}位于b.py,因此other使用main.py是错误的,我们应该使用import b,但import other.b需要a.py ,所以这是矛盾的。我该如何解决?

1 个答案:

答案 0 :(得分:1)

我认为这是你的代码结构,对吗?

mypackage
    other
        __init__.py
        a.py # import b
        b.py # def func_b()
    __init__.py
    main.py # from other.a import *

您可以使用此代码结构:

请勿在您的可安装软件包中使用绝对导入,例如from mypackage.other import b中的main.pyfrom .other import b中使用相对导入,例如:main.py

mypackage
    other
        __init__.py
        a.py # from . import b
        b.py
    __init__.py
    main.py # from .other.a import *

然后你可以在main.py中执行此操作:

b.func_b(...)

因为这样做,当你有一个脚本test.py

from mypackage import main

main.b.func_b()

底层它from .other.a import *,因为from . import b中有a.py。所以*实际上是b,这就是为什么你可以使用b.func_b() in main.py