所以我正在开发一个在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类,但它无法解析。为了防止它特别是单元测试的问题,我也尝试使用控制器包中的模块,该模块依赖于模型包中的类,反之亦然。他们都没有工作。我该如何解决这个问题?
答案 0 :(得分:2)
您是否已将根文件夹添加到系统路径?
import sys
sys.path.append(<place the Proj dir here>)
然后您可以按如下方式导入:
from src.model.somefile import Something
如果您不知道Proj的绝对路径,则可以始终使用
等组合os.path.dirname(os.getcwdu())