Python模块系统-导入同级子程序包

时间:2019-02-01 02:20:25

标签: python import python-import

在Python中,我希望子包中的文件导入同级子包。像这样:

/proj
    __init__.py
    runner_main.py
    /subpackageA
        __init__.py
        helper.py
    /subpackageB
        __init__.py
        runnerB.py

runner_main.py中,我可以打电话给import subpackageA。 但是,调用from . import subpackageA失败,并显示错误

ImportError: cannot import name 'preprocessing' from '__main__'

这不是问题,除了我想从helper.py导入runnerB。呼叫from .. import subpackageA失败,并显示类似错误。

我不想在系统或Python路径上放置/proj;我希望它可以作为独立程序包运行。如何使这个简单的案例起作用?

2 个答案:

答案 0 :(得分:0)

尝试

from subpackageA import classA, functionB, constantC

答案 1 :(得分:0)

这取决于您在哪里运行代码。您可以从runnerB导入helper.py。但是,如果直接运行RunnerB,它将给您与您描述的相同的错误。但是,如果您从放置在导入runnder模块的父目录中的任何py文件中运行,它将起作用。