从不同层级的文件夹中导入类

15 投票
2 回答
25755 浏览
提问于 2025-04-17 05:16

我有一个这样的Python应用程序

/
/crawl.py
/crawl/__init__.py
/crawl/john.py
/tests/test_john.py

我想做的是运行单元测试 test_john.py,这个测试需要用到 john.py,但它在另一个文件夹里。

在我的 tests/test_john.py 中,当我运行它时,我得到了这个

Traceback (most recent call last):
  File "test_john.py", line 2, in <module>
    from john import John
ImportError: No module named john

那么我该如何从crawl文件夹中导入一个类呢……

2 个回答

3

如果你的操作系统支持这个功能,可以在 test 目录里放一个指向 ../crawl 的符号链接,然后你就可以用 from crawl.john import John 这行代码来导入了。

17

如果你的根文件夹在你的pythonpath里,并且你把它变成一个可以导入的包,方法如下:

/__init__.py
/crawl.py
/crawl/__init__.py
/crawl/john.py
/tests/__init__.py
/tests/test_john.py

那么你可以这样做:

from crawl.john import John

或者这样:

from ..crawl.john import John

撰写回答