我有一棵看起来像这样的树:
└──env
│
└──Project
│
├── DirA
│ ├── A_MAIN
│ ├── __init__.py
│ ├── FILES
│ └── __init__.py
│ └── fileA1
│ └── fileA2
│
├── FoldersB
│ └── DirB
│ ├── A_MAIN
│ ├── __init__.py
│ ├── FILES
│ └── __init__.py
│ └── fileA1
│ └── fileA2
├── Tests
│ └── test.py
│ └── __init__.py
│
├── __init__.py
在(两个)fileA1中我有类似的东西:
from A_MAIN.FILES.fileA2 import <CLASS>
无论出于何种原因,top fileA1正在从FoldersB /../../../ fileA2导入实现,而不是在同一目录中导入fileA2。
可能需要注意的是,所有文件夹名称,类名等都是相同的。我的预感是在sys.path中出错了,但是我在调试时遇到了麻烦。
sys.path:
[
'/Users/Shared/FolderX/FolderY/Project/Tests',
'/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python36.zip',
'/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python3.6',
'/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload',
'/Users/Shared/FolderX/FolderY/env/lib/python3.6/site-packages',
'/Users/Shared/FolderX/FolderY/Project/FoldersB/DirB',
'/Users/Shared/FolderX/FolderY',
'/Users/Shared/FolderX/FolderY/Project/DirA/A_MAIN/irrelevant_package'
]
来自DirA ... / fileA1:
import A_MAIN.FILES.fileA2 as testImportPath
print(os.path.abspath(__file__))
# Results in:
# /Users/Shared/FolderX/FolderY/Project/DirA/A_MAIN/FILES/fileA1
print(os.path.abspath(testImportPath.__file__))
# Results in:
# /Users/Shared/FolderX/FolderY/Project/FoldersB/DirB/A_MAIN/FILES/fileA2
我希望能够从Project目录中比较fileA1&(包含fileA2&#39; CLASS作为成员变量)中CLASS的实现,这就是我遇到这个问题的原因。奇怪的环境。
当前工作目录为/Tests/test.py
。
编辑:更新的树更正确,包括sys路径和os路径信息