在Python中从不同目录导入

2 投票
1 回答
2055 浏览
提问于 2025-04-16 10:46

这是我的文件夹结构:

src/
  __init__py
  Lowlevel/
    __init__.py
    ModuleToCheck.Py
  Test/
    __init__.py
    ModuleToCheck_test.py

(__init__.py 是空文件)

现在我想在 ModuleToCheck_test.py 中导入 ModuleToCheck.py

我该怎么做才能不修改 sys.path 呢?


更新:

from ..Lowlevel import ModuleToCheck 结果是:

src$ python Test/ModuleToCheck_test.py 
Traceback (most recent call last):
  File "Test/ModuleToCheck_test.py", line 6, in <module>
    from ..Lowlevel import ModuleToCheck
ValueError: Attempted relative import in non-package

1 个回答

3

以下内容来自 http://docs.python.org/tutorial/modules.html#intra-package-references

请注意,显式和隐式的相对导入都是基于当前模块的名称。因为主模块的名称总是 "__main__",所以如果你想把某个模块作为Python应用的主模块使用,最好使用绝对导入。

你正在把模块 ModuleToCheck_test.py 当作主模块来运行,所以出现了异常。

一个解决办法是在你的 src 目录下创建一个 test.py 模块,内容如下:

import Test.ModuleToCheck_test

然后你可以通过 python test.py 来运行这个模块。

撰写回答