Python/Git/模块结构最佳实践
我们有很多小项目,它们共享公共设施“项目” 示例:Python/Git/模块结构最佳实践,python,git,Python,Git,我们有很多小项目,它们共享公共设施“项目” 示例: 实用程序项目数学包含函数添加 项目A和项目B都需要数学。添加 项目A与项目B 那么,拥有3个git存储库(project_a、project_B和math)并在本地将其克隆为 /SOMWHERE/workspace/project_A /SOMWHERE/workspace/math 在/SOMWHERE/workspace/project\u A/\uuuuu init\uuuuuuuuy.py中 import sys sys.path.a
实用程序项目数学包含函数添加
项目A和项目B都需要数学。添加
项目A与项目B 那么,拥有3个git存储库(project_a、project_B和math)并在本地将其克隆为
/SOMWHERE/workspace/project_A
/SOMWHERE/workspace/math
在/SOMWHERE/workspace/project\u A/\uuuuu init\uuuuuuuuy.py中
import sys
sys.path.append('../math')
import math
math.add()
我已经读过了,但这并不适用于SCM和共享模块
所以总结一下我的问题:是吗
sys.path.append('../math')
import math
好的做法还是有一种更“pythonic”的方法呢?您描述的所有内容(3个项目)听起来都不错,只是您不应该乱搞sys.path
。相反,设置PYTHONPATH
环境变量
另外,如果您不知道distutils,我猜您可能是python开发的新手,可能不知道virtualenv。您也应该使用它(它允许您针对“干净”的python版本进行开发,该版本没有软件包,或者只有您为该环境安装的软件包)。子模块是共享模块的次优方式,就像您在评论中所说的那样。更好的方法是使用您选择的语言(即Python)提供的工具 首先,隔离每个项目python环境。安装软件包并将依赖项存储在
requirements.txt
文件中
然后,你可以和
如果您不想将包发布到野外,您也可以
使用此设置,您将能够使用不同版本的库并使用它们,而不会破坏与旧代码库的兼容性。您还将避免使用难以与git一起使用的子模块。使用distutils或类似工具在本地安装“math”,以便A和B可以使用它。(因为
math
是不相关项目使用的公共基础设施,所以它可能相对稳定。)你知道git子模块吗?@iveqy:是的,我知道,也许这就是方法。但在读了像我这样的文章后,我决定不使用them@SvenMarnach:谢谢,我不知道distutils,所以我不得不把它们读出来。也许我在我的问题中没有说清楚:数学将定期更改(即,提交是由从事A和B工作的人员进行的),因此分发和安装它似乎不是非常实用的子模块需要一些git知识,然而,那篇文章只是fud。数字1和3是错误的,如果你理解Git,那么数字2一点也不奇怪。但是你说你不想一直构建发行版,因为它变化很快。叹息。。。