Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Eclipse和PyDev在Python中进行相对导入?_Python_Eclipse_Svn_Pydev - Fatal编程技术网

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

如何使用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\

因此,我正在从事一个Python项目,该项目在我之前的SVN回购协议中就已经存在。当我第一次拉它时,结构有点奇怪,因为它类似于:

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())