使用配置文件打包 Python 应用程序

2024-01-06

我正在使用 ConfigParser 来配置我的应用程序,现在我想让它易于分发,同时保留可配置性。

我想我需要一个包含配置文件模板的目录,以及一些生成配置以实际使用的方法。然后我需要一个可以在 virtualenv、用户主目录等中工作的地方来存储它。我希望它与普通 Unix 包的工作方式尽可能接近,即在 etc 中进行配置,但在主目录中进行覆盖。是否有现成的解决方案,如果没有,我应该在 setup.py 等中放入什么以使其按我想要的方式工作?


您可以使用data_files http://docs.python.org/distutils/setupscript.html#installing-additional-files的选项distutils将文件安装到任何您想要的位置。

data_files指定一个序列(directory, files)按以下方式配对:

setup(...,
      data_files=[('/etc', ['cfg/config1.ini', 'cfg/config2.ini']),
                  ('/etc/init.d', ['bin/initscript1'])],
      ....
     )

当读取应用程序上的配置文件时,您可以合并/home版本(如果存在),使用.read()的方法ConfigParser objects http://docs.python.org/library/configparser#ConfigParser.RawConfigParser.read:

files_read = cfgparserobj.read(['/etc/config1.ini', 
                                os.path.expanduser('~/.config1.ini')])
for fname in files_read:
    print "Reading config from", fname

那会读到/etc/config1.ini然后用来自的东西覆盖定义.config1.ini在用户的主目录中(如果存在)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用配置文件打包 Python 应用程序 的相关文章

  • 导入错误:无法导入名称“FFProbe”

    我无法获取ffprobe包 https github com simonh10 ffprobe在 Python 3 6 中工作 我使用 pip 安装它 但是当我输入import ffprobe it says Traceback most
  • 从所有数据帧列中删除子字符串

    我有一个单词列表 大约 1000 个单词 我称之为负面单词 CAST ARTICLES SANITARY JAN CLAUSES SPECIAL ENDORSEMENT 我很快就会用这个单词列表制作一个数据框 我还有一个数据框 看起来像 F
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • 如何在 Pandas Python 中按 id 对行进行排名

    我有一个像这样的数据框 id points1 points2 1 44 53 1 76 34 1 63 66 2 23 34 2 44 56 我想要这样的输出 id points1 points2 points1 rank points2
  • 动态字段取决于 WTForms 的先前字段

    我正在使用 WTForms 制作表格 目前 我有这个 class UploadForm flask wtf Form fichier wtforms fields FileField u Fichier description wtform
  • 使用 Pandas 从 csv 文件读取标题信息

    我有一个包含 14 行标题的数据文件 在标头中 有经纬度坐标和时间的元数据 我目前正在使用 pandas read csv filename delimiter header 14 读取文件 但这只是获取数据 我似乎无法获取元数据 有人知道
  • 如何用函数记录一个文件?

    我有一个带有函数 lib py 但没有类的python 文件 每个函数都有以下样式 def fnc1 a b c This fonction does something param a lalala type a str param b
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • 使用 scikit 时 scipy.sparse 矩阵的缩放问题

    在使用 scikit learn 解决机器学习问题时 我需要在使用 SVM 进行训练之前对 scipy sparse 矩阵进行缩放 但在文档 http scikit learn org stable modules preprocessin
  • 列表推导式和 for 循环中的 Lambda 表达式[重复]

    这个问题在这里已经有答案了 我想要一个 lambda 列表 作为一些繁重计算的缓存 并注意到这一点 gt gt gt j for j in lambda i for i in range 10 9 9 9 9 9 9 9 9 9 9 Alt
  • 了解 Python 2.7 中的缩进错误

    在编写 python 代码时 我往往会遇到很多缩进错误 有时 当我删除并重写该行时 错误就会消失 有人可以为菜鸟提供 python 中 IndentationErrors 的高级解释吗 以下是我在玩 CheckIO 时收到的最近 inden
  • 如何从 python 脚本执行 7zip 命令

    我试图了解如何使用 os system 模块来执行 7zip 命令 现在我不想用 Popen 或 subprocess 让事情变得复杂 我已经安装了 7zip 并将 7zip exe 复制到我的用户文件夹中 我只想提取我的测试文件 inst
  • Snakemake:将多个输入用于具有多个子组的一个输出的规则

    我有一个工作管道 用于下载 比对和对公共测序数据执行变体调用 问题是它目前只能在每个样本的基础上工作 i e作为每个单独测序实验的样本 如果我想对一组实验 例如样本的生物和 或技术复制 执行变体调用 则它不起作用 我试图解决它 但我无法让它
  • 哪种方式最适合Python工厂注册?

    这是一个关于这些方法中哪一种被认为是最有效的问题 Pythonic 我不是在寻找个人意见 而是在寻找惯用的观点 我的背景不是Python 所以这会对我有帮助 我正在开发一个可扩展的 Python 3 项目 这个想法类似于工厂模式 只不过它是
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def
  • SQLAlchemy 与 count、group_by 和 order_by 使用 ORM

    我有几个函数需要使用 count group by 和 order by 进行一对多连接 我使用 sqlalchemy select 函数生成一个查询 该查询将返回一组 id 然后我对其进行迭代以对各个记录执行 ORM 选择 我想知道是否有
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • 什么是 CMAKE_BUILD_TYPE:调试、发布、RelWithDebInfo 和 MinSizeRel?

    来自文档页面 https cmake org cmake help latest variable CMAKE BUILD TYPE html CMAKE BUILD TYPE 指定单配置生成器的构建类型 这静态指定将在此构建树中构建什么构
  • 使用 UrlRewriter.NET 的外部配置文件

    我正在使用网址重写器 NET http urlrewriter net为我的 asp net 网站实现 url 重写的库 目前正在从以下位置读取重写规则web config像这样的文件
  • 想要用java查找两个文本文件的内容差异

    我有两个文本文件 a txt b txt 每个文本文件都包含一些文件路径 b txt包含的文件路径多于a txt 我想确定添加哪些路径以及从中删除哪些路径a txt以便它对应于路径b txt 例如 abc txt 包含 E Users Do
  • 在 OS X Yosemite 上安装 Compass

    我正在尝试使用 GEM 安装指南针 但出现很多错误 我的 MacBook Pro 运行的是 OS X Yosemite 有人有同样的问题吗 感谢您的时间 祝你今天过得愉快 sudo gem install compass Password
  • 从 Gridfs 读取 chunk 并转换为 Buffer

    我有一个关于缓冲区的问题 这是我的代码 var Grid require gridfs stream var mongodb require mongodb var gfs Grid db mongodb var deferred Q de
  • WPF使用Canvas作为ImageSource

    我是 WPF 新手 正在尝试构建一个带有工具栏和图标的基本应用程序 我正在测试 Infragistics 的 XamRibbon 和ButtonTool功能区上显示的要求ImageSource显示这样的图像
  • 将 Microsoft 调试器与 Xamarin Android 结合使用

    Android 项目设置中有一个选项安卓选项部分关于包装选项卡可让您在 Xamarin 调试器或 Microsoft 调试器之间进行选择 Xamarin 调试器可以工作 但不如 Microsoft 的调试器好 不幸的是 当我尝试使用 Mic
  • 格式化掷骰子输出 Java

    我创建了一个代码 用户输入掷骰子的次数 然后程序输出面孔值 每张面孔出现的次数以及每张面孔出现的百分比频率 我必须使用 System out printf 来格式化输出 我的问题是 每当我输入超过 9 的卷时 我的输出格式就会完全丢失 这是
  • Java中HashMap的字面声明[重复]

    这个问题在这里已经有答案了 In JavaScript 您可以声明 a 的所有键和值组合JSON一次性对象如下 var myJSON key1 value 1 key2 value 2 key3 value 3 key4 value 4 k
  • 初学者 URL 重写 htaccess

    我只想重写来自以下位置的所有请求 http example com products product cfm id product name to http example com products product name 其次 http
  • Netbeans 和 MinGW-w64

    我正在尝试在 win7 64 位上配置我的 NetBeans 以与 MinGW w64 一起使用 所以我将编译器的以下路径放入 PATH 变量中 C mingw w64 bin i686 mingw binC minGw MSYS msys
  • 移位和二元按位运算符适用于布尔参数

    Python 文档转移操作 http docs python org 3 3 reference expressions html shifting operations and 二进制按位运算 http docs python org 3
  • 为什么 JVM 参数以“-D”开头?

    为什么我们需要在 JVM 参数前加上前缀 D例如从命令行运行 jar 时 例如 java jar DmyProp Hello World myProgram jar 用于运行myProgram jar与系统参数myProp 那么为什么领先
  • 将值合并到数组中

    我遇到的情况是 我必须手动将标签与值合并 然后存储在数组中 例如aaa 10 bbb 20 ccc 30 这些值来自文本字段 最后我必须以这种格式提供 用逗号分隔 标签是硬编码的 如何创建这样的数组或字符串aaa 10 bbb 20 ccc
  • 安装框架(问题 cURL 错误 6:无法解析主机:cache-proxy)

    我尝试安装 api platform https api platform com docs distribution https api platform com docs distribution 启动后我在日志中看到 api plat
  • 分析我的程序的时间复杂度

    我在确定算法的时间复杂度时遇到问题 for int i 0 i
  • 使用XElement保存XML文件时,文件的对齐方式也会发生变化,如何避免?

    我在用 XElement root XElement Load filepath 加载 XML 文件 然后找到我需要的东西 IEnumerable
  • GitKraken 启用长路径的 .git 配置文件在哪里

    到目前为止 我已经从命令行运行程序和 GitHub Desktop 使用了 Git 我尝试使用 GitKraken 但它有一个很大的问题 我有一个存储库 它有真正的嵌套文件夹 超过了 256 个长度 这个问题很容易用 Git 和 GitHu
  • 在枚举内部提供函数是否被认为是“干净的”?

    我在源代码中发现了一些代码 这些代码基本上使用 switch case 来遍历枚举的每个可能值 并调用根据数据类型返回 Number 对象的适当函数 这是一个片段 case TYPE 16BIT SIGNED BE measurement
  • 使用配置文件打包 Python 应用程序

    我正在使用 ConfigParser 来配置我的应用程序 现在我想让它易于分发 同时保留可配置性 我想我需要一个包含配置文件模板的目录 以及一些生成配置以实际使用的方法 然后我需要一个可以在 virtualenv 用户主目录等中工作的地方来