Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/Git/模块结构最佳实践_Python_Git - Fatal编程技术网

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一点也不奇怪。但是你说你不想一直构建发行版,因为它变化很快。叹息。。。