0

我有两个文件,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 as y, branch_a.z as z... 不需要很长时间,但如果有一个自动化的解决方案会很好。有任何想法吗?

编辑:相对路径的代码:

import sys
sys.path.append("./..")
4

1 回答 1

1

您可以设置PYTHONPATH环境变量来控制在哪个分支根目录下开始查找导入的模块。

还建议在适当的地方使用相对导入(请参阅此处)。做得对,这将大大减少对环境/路径设置的依赖。但是,您仍然需要使用 env/path 设置,因为并非所有导入都可以/应该成为相对的(例如,为了避免过多的高级导入,并且因为脚本中的导入不能是相关的)。

于 2013-10-23T19:08:45.710 回答