[英]How to organize a python project in git?
我有一个Python项目A,模块名称为config,其中包含config.yaml文件。 此项目用作模板,供其他用户根据需要使用和更新config.yaml。 我希望这些用户分叉我的git项目,并在其分叉上进行更新,并能够在模板可用时获得模板的更新。 但是,我不想覆盖配置文件,因为他们将更改从主项目拉到其分支。 如何解决呢?
My_app
MyConfigModule
__init__.py
config_helper.py
config.yaml
myAppModule
__init__.py
myModule.py
首先,单独的代码和配置。 整个代码应驻留在My_app
,并且只有开发人员才能被用户触摸,而配置可以位于根目录中。
您有多种选择方式想要分别区分默认配置和实际配置:
具有默认配置,并允许用户设置其本地配置 。 用户必须自己创建一个config.yaml
文件。 例如,bash(和许多其他程序)从/etc/bash.bashrc
读取其配置,然后从~/.bashrc
进行更新。 这种方法的缺点是您需要实现配置合并机制。 如果配置的某些部分相当静态/复杂(例如,程序设置或转换规则),但是另一部分通常需要覆盖(用户名/电子邮件地址),则这是一个好主意。
要求用户将config.default.yaml
复制到config.yaml
。 在不存在config.yaml的情况下进行程序安装或运行时,您可以引发错误并说明如何复制,可以静默回退到默认配置,或者将默认配置复制到config.yaml
然后继续。 您可以在默认配置中放入很多文档,但缺点是配置文件太长。 例如, php的默认配置是2000行长。
提示用户提供最重要的(或全部)配置选项,并编写一个小的配置文件,例如debian的debconf。 如果您的程序具有交互式UI,则这是一个好主意。
您可以混合使用这些选项,例如,提示用户提供最重要的选项并依赖默认配置,或者在提示用户后通过稍作修改复制长的默认配置。
在所有这些情况下,您要包括config.yaml
在gitignore ,而不是二选一中,默认的配置文件应该在你的资料库的顶层,如果你希望用户手动复制它被放置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.