导入子模块时,Python导入中断

Joo*_*ost 5 python git-submodules

我感到困惑的是我还没有找到一个问题,因为这似乎是很普遍的情况。我可能忽略了它。存在类似的问题(例如这一问题),但是它们似乎都有不同的目标和约束。

我正在编写将另一个项目用作git子模块的代码。(简化的)情况如下所示:

.
??? A.py
??? sub
    ??? B.py
    ??? C.py
Run Code Online (Sandbox Code Playgroud)

文件的内容如下;

py

import sub.B

print(sub.B.x)
Run Code Online (Sandbox Code Playgroud)

py

import C

x = C.y * 2
if __name__ == '__main__':
    print(x)
Run Code Online (Sandbox Code Playgroud)

py

y = 7
Run Code Online (Sandbox Code Playgroud)

当我尝试执行时A.py,它告诉我:

  File "/Users/Joost/poc/sub/B.py", line 1, in <module>
    import C
ImportError: No module named 'C'
Run Code Online (Sandbox Code Playgroud)

自然,当我修改B.pyCfrom 实际得到时,它就可以正常工作sub.C。但是,就像sub第三方的子模块一样,我无法做到这一点。而且,它将破坏子模块的功能。

解决这个问题的正确方法是什么?