如果配置文件不存在,如何安装,升级时不覆盖它,卸载时不删除它?

How to install a config file if it does not exist, not overwrite it during upgrade and not delete it during uninstall?

As outlined in the documentation 我已经将 data_files 变量添加到 setup.py 以在安装包时安装配置文件:

setup(...,
      data_files=[('/greg/home/package', ['config']),]
     )

配置文件不存在时如何安装:

例如,当我尝试卸载软件包时,配置文件包含在要删除的文件列表中。

$ pip uninstall package
Uninstalling package-0.1.0:
  ...
  /home/greg/package/config
Proceed (y/n)? 

如果配置文件不存在,如何只安装配置文件,否则使用用户的版本?

一般来说,大多数软件包通过只提供一个 example 配置来处理这样的配置文件,并要求用户更改文件名或将其移动到不同的位置,以便它赢得'被覆盖或删除。

一些包会做的另一件事是提供命令行脚本来帮助在用户指定的位置生成配置(例如 Sphinx、Django),而不是将配置与项目一起打包。