从父文件夹的兄弟文件夹导入模块

3

我正在开展一个类似于以下结构的项目

project
│   README.md
│
└───package1
│    │  __init__.py
│    │  moduleA.py
│    │  └───classX
│    │  └───classY
│    │  moduleB.py
│
└───package2
│    │  __init__.py
│    │  moduleC.py
│    │  moduleD.py
│
└───package3
│   │   __init__.py
│   │   moduleE.py
│   │   moduleF.py
│   │
│   └───subpackage31
│       │   __init__.py
│       │   moduleG.py
│       │   moduleH.py

moduleG中,我正在尝试导入moduleC,以及在moduleA中定义的XY类。我尝试过:

from ...package2 import moduleC
from ...package1.moduleA import classX

我遇到了错误:

Traceback (most recent call last):
  File "/project/package3/subpackage31/moduleG.py", line 17, in <module>
    from ...package2 import moduleC
SystemError: Parent module '' not loaded, cannot perform relative import

任何帮助都将不胜感激。
提前致谢。

3
在包外面无法进行相对导入。你需要在顶层添加一个__init__.py文件,将project变成一个包。 - BrenBarn
1
同时应该使用2个点“..package2”,而不是三个点“...package2”。 - Sardorbek Imomaliev
1个回答

0

这是一个非常古老的问题,但是谷歌把我带到了这里,我想分享一种可能的解决方案。你可以这样做:

import sys
sys.path.append('../')
from package2 import moduleC
from package1.moduleA import classX

对于那些仍然无法使其工作的人来说,可以通过添加一个包含两个同级文件夹的中间文件夹来解决问题。https://stackoverflow.com/a/72114877/9404261 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接