How do I make relative importing work in Python using Eclipse with PyDev?
所以我正在做一个Python项目,在SVN报告中我之前就在这里。当我第一次拉动它时,它的结构有点奇怪,因为它类似于:
1 2 3 4 | Proj\ src\ tags\ trunk\ |
然后,所有的东西都在src中,是python模块文件,除了src是一个逻辑文件夹,里面没有完整的包。项目中的任何地方都没有初始版本。所以我想重组它,至少这样我可以通过我的项目使用相对进口。我还想设置它,使它看起来更像这样。
1 2 3 4 5 6 7 8 | Proj\ src\ model\ controller\ view\ test\ tags\ trunk\ |
号
但是,我尝试了设置这个,不管我做什么,它都无法在我必须遍历包时解决相对导入问题。我在每个级别包中放置了一个uuu init_uuu.py文件,其中一个包含在srcfolder中,所有文件都定义了uu all_uuuu。但是,当我尝试在测试包中进行单元测试并执行导入操作时,会说:
1 | from ..model.foo import Foo |
要尝试从模型包内的模块foo.py导入foo类,它无法解析。为了防止单元测试出现问题,我还对控制器包中依赖于模型包中类的模块进行了尝试,反之亦然。他们都没用。如何解决此问题?
是否已将根文件夹添加到系统路径中?
1 2 | import sys sys.path.append(<place the Proj dir here>) |
然后可以导入如下内容:
1 | from src.model.somefile import Something |
号
如果您不知道proj的绝对路径,则可以使用以下组合:
1 | os.path.dirname(os.getcwdu()) |