繁体   English   中英

Python / Git /模块结构最佳实践

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM