项目结构如下:
/root
- /crawler
- /basic
- agent.py
- settings.py
- main.py
- /tests
- /basic
- test_agent.py
- test_main.py
main.py
进口agent.py
,agent.py
进口settings.py
。它工作正常,因为我们在main.py
下运行/root/crawler
,使解释器添加/root/crawler
(因为它是main.py
生活的地方)到 sys.path,所以当agent.py
被导入和解释时,import settings
不会引发异常。
但是,当使用nose under运行单元测试时/root
,所有其他测试都可以test_agent.py
,除了解释器报告它不知道在哪里导入settings
。
如果我在导入正在测试的模块之前附加/root/crawl
到内部路径,它会起作用test_agent.py
,但这会被认为是一种不好的做法,对吧?
如果是这样如何避免ImportError
?