项目结构如下:
/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?