如何使用Eclipse和PyDev在Python中进行相对导入工作?

时间:2011-10-05 21:19:40

标签: python eclipse svn pydev

所以我正在开发一个在SVN回购中出现在我面前的Python项目。当我第一次拉它时,结构有点奇怪,因为它类似于:

Proj\
    src\
    tags\
    trunk\

然后一切都在src \中除了src之外的python模块文件只是一个没有整体包的逻辑文件夹。项目中没有__init__.py。所以我想重组它至少所以我可以通过我的项目使用相对导入。我也想设置它,看起来更像是这样。

Proj\
    src\
        model\
        controller\
        view\
        test\
    tags\
    trunk\

然而,我尝试设置它,无论我做什么,它都无法解决相对导入我必须遍历包的时刻。我在每个级别包中放置了一个__init__.py文件,其中一个位于src \文件夹中,并且所有文件都定义了__all__。但是,当我尝试在我的test \ package中进行单元测试并执行导入时说:

from ..model.foo import Foo

尝试从位于模型包内部的模块foo.py导入Foo类,但它无法解析。为了防止它特别是单元测试的问题,我也尝试使用控制器包中的模块,该模块依赖于模型包中的类,反之亦然。他们都没有工作。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您是否已将根文件夹添加到系统路径?

import sys
sys.path.append(<place the Proj dir here>)

然后您可以按如下方式导入:

from src.model.somefile import Something

如果您不知道Proj的绝对路径,则可以始终使用

等组合
os.path.dirname(os.getcwdu())