【发布时间】:2010-09-25 12:05:45
【问题描述】:
我想使用 git 来处理我正在编写的模块中的多个功能。我目前正在使用 SVN,只有一个工作区,所以我的 PYTHONPATH 上只有一个工作区。我意识到这不太理想,所以我想知道是否有人可以提出更“正确”的方法。
让我用一个假设的情况来详细说明: 我说我有一个模块'eggs',子模块'foo'和'bar'。 'bar' 中的组件使用 foo 中的代码,因此 eggs/bar/a.py 可能会“导入 egg.foo”。
假设“eggs”在 git 存储库中。我想尝试对“foo”进行一些更改,所以我复制了它。问题是eggs/bar 中的'import eggs.foo' 在PYTHONPATH 中找到了原始存储库,所以它最终使用旧的'foo' 而不是我修改过的。
如何设置自己,使模块的每个副本都使用自己关联的“foo”?谢谢。
edit-感谢指向相对导入的指针。我已经阅读了它,我可以看到如何应用它。我在使用它时遇到的一个问题是我已经建立了一个相当大的代码库,而且我对它并不太了解,所以大多数模块在if __name__ == '__main__': 下都有一个快速的“自测”,从什么我读过不玩相对进口:
http://mail.python.org/pipermail/python-list/2006-October/408945.html
http://www.velocityreviews.com/forums/t502905-relative-import-broken.html
我可以通过谷歌搜索到的另一个解决方案是故意操纵 sys.path,这似乎是一种更糟糕的 hack。还有其他可能吗?
编辑 - 感谢您的建议。我最初误解了 git 分支,所以指出的分支正是我想要的。尽管如此,我之前没有听说过相对进口,所以也谢谢你。我学到了一些新东西,可能会用到它。
【问题讨论】:
-
查看相关问题(右侧)。