从不同层级的文件夹中导入类
我有一个这样的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