繁体   English   中英

如何在git中组织python项目?

[英]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.yamlgitignore ,而不是二选一中,默认的配置文件应该在你的资料库的顶层,如果你希望用户手动复制它被放置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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