Python 项目中的 ModuleNotFoundError

ModuleNotFoundError in Python project

我在 Python 中有以下项目结构(...意味着我有 n crawler_.py 个文件)。

project
├── crawlers
│   ├── __init__.py
│   ├── crawler_1.py
│   ├── crawler_2.py
│   ...
│   ├── crawler_n.py
│   └── useful_functions.py
├── main.py
└── __init__.py

我需要将所有爬虫从crawler导入main,所以我用这个

# main.py
from crawlers import crawler_1
from crawlers import crawler_2
...
from crawlers import crawler_n

但我还需要 useful_functions.py 在所有 crawler_.py 文件中,所以我在每个文件中都使用了它。

# crawler_.py
import useful_functions

但是当我 运行 main.py 尝试导入 crawler_1.

时,我得到了 ModuleNotFoundError: No module named 'useful_functions'

所以我尝试了以下

# crawler_.py
from crawlers import useful_functions

它在我 运行 main.py 时有效。问题是我可能只想要 运行 直接 crawler_.py 之一。使用最后一个导入语句,我得到 ModuleNotFoundError: No module named 'crawlers'。不知道如何解决这个问题,如果我应该调整代码中的某些内容,或者如果我使用的结构从根本上是错误的(我完全可以调整项目结构)。

您可以在 crawler_n.py

中使用它
if __name__ == '__main__':
    import useful_functions
else:
    import crawlers.useful_functions as useful_functions

__name__ == '__main__' 检查模块是否被调用或导入,从而相应地进行导入。