在项目中导入 - 模块不工作

Importing within project - modules not working

我有一个具有当前结构的项目,但我 认为 应该可以的时候,我的一些导入却无法正常工作。由于文件夹已正确标记为模块,这些导入是否应该起作用?

foo
├── app
│   ├── app.py
│   ├── folder1
│   │   ├── aaa.py
│   │   └── __init__.py
│   ├── folder2
│   │   ├── bbb.py
│   │   ├── __init__.py
│   ├── folder3
│   │   ├── ccc.py
│   │   ├── __init__.py
│   ├── __init__.py
│   └── main.py
├── README.md
└── .gitignore

作品

aaa.py

class X():
    pass

main.py

from folder1.aaa import X

密码:foo 文件夹

CMD: python app/main.py


不起作用

aaa.py

class X():
    pass

main.py

from app.folder1.aaa import X

密码:foo 文件夹

CMD: python app/main.py

Traceback (most recent call last):
  File "foo/app/main.py", line 1, in <module>
    from app.folder1.aaa import X
ModuleNotFoundError: No module named 'app'

不起作用

aaa.py

from app.folder2.bbb import Y
class X(Y):
    pass

bbb.py

class Y():
    pass

main.py

from folder1.aaa import X

密码:foo 文件夹

CMD: python app/main.py

  File "foo/app/folder1/aaa.py", line 1, in <module>
    from app.folder2.bbb import Y
ModuleNotFoundError: No module named 'app'

Python 导入通过搜索 sys.path 中的路径来工作。 通过运行下面的代码

检查应用是否被添加到sys.path
import sys
print(sys.path)

如果此列表中不存在,请通过包含应用程序目录来附加 sys.path。

import sys
import os
current_loc = os.path.realpath(__file__)
parent_dir = os.path.dirname(os.path.dirname(current_loc))
sys.path.append(parent_dir)