Python 导入 ModuleNotFoundError

Python import ModuleNotFoundError

我有一个 Python 项目,我正在使用 PyCharm 在我的本地 PC 上工作,我从 Google Colab 服务器执行代码(因为我需要 GPU)。

我使用 GitHub 将我的项目上传到 Colab(我将包上传到 GitHub,然后在 Colab 中克隆它)。

但是,我的导入有问题。

包结构是这样的:

a/
->b/
  ->c/
    -> script1.py
    -> script2.py
  ->d/
    -> script3.py

script1.py 导入 script2.py 和 script3.py.

我尝试这样导入:

import script2
from b.d import script3

这是我的测试用例:

在这两种情况下,我的进口商品都得到 ModuleNotFoundError

但是如果我像这样使用相对导入:

from . import script2
from ..d import script3

它在上述两种情况下都很好用,但是 PyCharm 抱怨相对导入,脚本只会在主文件位于文件夹 b 之外时执行。

我尝试将 __init__.py 添加到文件夹 d,但老实说,我仍然不完全理解这些文件的用途。根据我的阅读,它们在 Python 3.3+ 中是多余的(我使用 Python 3.7)。

所以我的问题是:无论主脚本的位置如何,我怎样才能使导入工作随时进行?

提前致谢

here 完美解释了模块的绝对和相对导入以及如何使用它们。 在您的情况下,要在 c 文件夹中不进行相对导入,请创建包含以下内容的文件 __init__.py:

import os, sys

sys.path.append(os.path.dirname(os.path.realpath(__file__)))

那你就可以在里面script1.py留下来

import script2
from b.d import script3

并且此导入将在文件夹外使用