![](/img/trans.png)
[英]Git Best Practice: How to structure multiple python modules needed for one large app
[英]Python / Git / Module structure best practice
我们有许多共享公用程序“项目”的小项目
范例 :
实用项目数学包含功能添加
项目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()
我已经阅读了“ 构建项目”,但是无法处理SCM和共享模块。
所以总结一下我的问题:是
sys.path.append('../math')
import math
好的做法还是有一种更“ pythonic”的方式来做到这一点?
子模块是共享模块的次佳方式,就像您在评论中所说的那样。 更好的方法是使用您选择的语言(即Python)提供的工具。
首先, 创建virtualenvs来隔离每个项目python环境。 使用pip安装软件包并将依赖项存储在requirements.txt
文件中。
然后,您可以使用distutils为每个utils库创建一个特定的程序包,并在Pypi上共享它 。
如果您不希望将软件包发布到野外,也可以托管自己的Pypi服务器 。
使用此设置,您将能够使用不同版本的库并对其进行处理,而不会破坏与旧代码库的兼容性。 您还将避免使用难以与git一起使用的子模块。
您所描述的所有内容(3个项目)听起来都不错, 只是您不应该乱用sys.path
。 而是设置PYTHONPATH
环境变量。
另外,如果您不了解distutils,我想您可能是python开发的新手,并且可能不了解virtualenv。 您也应该使用它(它允许您针对不包含任何软件包或仅针对该env安装的软件包的“干净” python版本进行开发)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.