gpt4 book ai didi

python - 如何使用 python 模块的多个 git 分支?

转载 作者:太空狗 更新时间:2023-10-29 14:34:58 24 4
gpt4 key购买 nike

我想使用 git 来同时处理我正在编写的模块中的多个功能。我目前正在使用 SVN,只有一个工作区,所以我的 PYTHONPATH 上只有工作区。我意识到这不太理想,所以我想知道是否有人可以建议一种更“合适”的方法来做到这一点。

让我用一个假设的情况来详细说明:我说我有一个模块“eggs”,带有子模块“foo”和“bar”。 “bar”中的组件使用 foo 中的代码,因此 eggs/bar/a.py 可能会“导入 eggs.foo”。

假设“eggs”在 git 存储库中。我想尝试对“foo”进行一些更改,所以我复制了它。问题是 eggs/bar 中的 'import eggs.foo' 在 PYTHONPATH 中找到了原始存储库,因此它最终使用旧的 'foo' 而不是我修改过的 'foo'。

如何设置自己,使模块的每个副本都使用其自己关联的“foo”?谢谢。

编辑- 感谢您提供指向相关导入的指针。我已经阅读了它,我可以看到如何应用它。我在使用它时遇到的一个问题是我已经建立了一个相当大的代码库,而且我对它还不太整洁,所以大多数模块在 if __name__ == 下都有一个快速的“ self 测试” '__main__':,从我读到的内容来看,它与相对导入无关:

我在谷歌上搜索到的另一个解决方案是故意操纵 sys.path,这似乎是一个更糟糕的黑客攻击。还有其他可能吗?

编辑 - 感谢您的建议。我最初误解了 git 分支,所以指出分支正是我想要的。尽管如此,我之前没有听说过相对进口,所以也谢谢你。我学到了一些新东西,可能会结合使用。

最佳答案

Relative imports ( PEP 328 ) 可能有帮助:

eggs/
__init__.py
foo.py
bar.py

# foo.py
from __future__ import absolute_import
from . import bar

参见 How do you organize Python modules?其他选项。

编辑:

另一种选择是使用 S.Lott 和 Jim 的建议,即重组您的包以分解出 eggs.bar.a 使用的 eggs.foo 部分,并且使用 git 在实验分支上工作(参见 Git Community Book )。

这是一个例子:

$ git status
# On branch master
nothing to commit (working directory clean)

[只是为了确保一切都好]

$ git checkout -b experimental
Switched to a new branch "experimental"

[从事实验性工作]

$ git commit -a

[提交到实验分支]

$ git checkout master
Switched to branch "master"

[在 master 分支上工作]

$ git commit -a

将更改 merge 到主分支:

$ git merge experimental

参见章节 Basic Branching and Merging摘自上述书籍。

关于python - 如何使用 python 模块的多个 git 分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/343517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com