我有两个文件,a.py和b.py.它们是同一个项目的不同分支(我使用git在另一个目录中检出另一个分支)。我有第三个文件c.py,它从a.py和b.py中导入函数以相互比较。
我的问题是a.py和b.py的导入几乎相同,但他们导入的内容通常不同,因为它们是不同的分支。当我将要测试的函数从每个文件(a.py和b.py)导入c.py时,我需要将它们的路径添加到sys.path。当我这样做时,b.py导入与a.py相同的模块,而不是导入它自己的模块,反之亦然。
目前,我每次创建新分支时都会在导入中添加额外的“目录”。因此,如果我最初在b.py(非主分支)中导入x,y,z,我会将带有这些模块的目录之前的路径添加到sys.path并将导入更改为branch_a.x为x,branch_a .y为y,branch_a.z为z ...它不需要很长时间,但拥有自动化解决方案会很好。有什么想法吗?
编辑: 相对路径的代码:
import sys
sys.path.append("./..")
答案 0 :(得分:1)
您可以设置PYTHONPATH
环境变量来控制哪个branch-root-dir开始在下面查找导入的模块。
还建议在适当的地方使用相对导入(参见here)。如果做得好,这将大大减少对环境/路径设置的依赖性。但是,您仍然需要使用env / path设置,因为并非所有导入都可以/应该变为相对(例如,为了避免过多的上级导入,并且因为脚本中的导入无法相关)。