我们有很多小项目共享公用事业“项目”
示例:
实用程序项目数学包含功能添加
项目 A 和项目 B 都需要 math.add
项目 A 与项目 B
所以有3个git存储库(project_A,project_B和math)并在本地克隆它们是个好主意
/SOMWHERE/workspace/project_A
/SOMWHERE/workspace/math
并且在/SOMWHERE/workspace/project_A/__init__.py中有类似
的内容import sys
sys.path.append('../math')
import math
math.add()
我已阅读Structuring Your Project但不处理SCM和共享模块。
总结一下我的问题:是
sys.path.append('../math')
import math
良好的做法还是有更多的“pythonic”方式呢?
答案 0 :(得分:1)
子模块是您在评论中所说的共享模块的次优方式。更好的方法是使用您选择的语言提供的工具,即Python。
首先,create virtualenvs隔离每个项目的python环境。 Use pip在requirements.txt
文件中安装包和存储依赖项。
然后,您可以create a specific package for each of your utils library using distutils和share it on Pypi。
如果您不想将包裹放到野外,您还可以host your own Pypi server。
使用此设置,您将能够使用不同版本的库并对其进行处理,而不会破坏与旧代码库的兼容性。您还将避免使用难以与git一起使用的子模块。
答案 1 :(得分:0)
你所描述的所有内容(3个项目)听起来不错除了你不应该使用sys.path
。相反,设置PYTHONPATH
环境变量。
另外,如果你不知道distutils我猜你可能是python开发的新手,可能不知道virtualenv。你也应该使用它(它允许你开发一个没有软件包的“干净”python版本,或只开发你为那个环境安装的软件包。)