如何使用Eclipse和PyDev在Python中进行相对导入?
因此,我正在从事一个Python项目,该项目在我之前的SVN回购协议中就已经存在。当我第一次拉它时,结构有点奇怪,因为它类似于:如何使用Eclipse和PyDev在Python中进行相对导入?,python,eclipse,svn,pydev,Python,Eclipse,Svn,Pydev,因此,我正在从事一个Python项目,该项目在我之前的SVN回购协议中就已经存在。当我第一次拉它时,结构有点奇怪,因为它类似于: Proj\ src\ tags\ trunk\ 然后所有的东西都在src\中,除了src\之外的python模块文件只是一个逻辑文件夹,里面没有完整的包。在项目中的任何地方都没有一个_uinit__uuuuu.py。所以我想重新构造它,至少这样我可以通过我的项目使用相对导入。我还想设置它,使它看起来更像这样 Proj\ src\
Proj\
src\
tags\
trunk\
然后所有的东西都在src\中,除了src\之外的python模块文件只是一个逻辑文件夹,里面没有完整的包。在项目中的任何地方都没有一个_uinit__uuuuu.py。所以我想重新构造它,至少这样我可以通过我的项目使用相对导入。我还想设置它,使它看起来更像这样
Proj\
src\
model\
controller\
view\
test\
tags\
trunk\
然而,我尝试设置它,无论我做什么,它都无法在我必须遍历包时解析相对导入。我在每个级别的包中放置了一个_uinit __; py.py文件,包括src\文件夹中的一个文件,所有这些文件都定义了_; all __;。但是,当我尝试在我的test\包中进行单元测试并执行导入时,会说:
from ..model.foo import Foo
要尝试从位于模型包内部的模块Foo.py导入Foo类,它不会解析。为了防止单元测试出现问题,我还尝试了控制器包中的一个模块,该模块依赖于模型包中的一个类,反之亦然。他们都没有工作。如何解决此问题?是否已将根文件夹添加到系统路径
import sys
sys.path.append(<place the Proj dir here>)
如果您不知道Proj的绝对路径,则始终可以使用以下组合:
os.path.dirname(os.getcwdu())
当你说它无法解决时,你的意思是你在运行模块时出错了,或者你在PyDev中出错了?我现在假设这是运行模块时出错了,但我不想排除可能是PyDev配置问题的可能性。你能发布你遇到的异常吗?我想你的意思是
os.getcwd()
os.path.dirname(os.getcwdu())