我正在创建一个Python3
模块,希望将其移植到嵌入式板(使用Yocto)并使用setuptools
,而不是在PyPi上。
我在主模块文件夹中有一个conf.json
文件:
myApp
| -- submodule-1
| -- submodule-2
| -- main.py
| -- conf.json
之所以选择conf.json
文件,是因为Python Packaging tutorial提到了非代码文件
这变得有些复杂,因为据我了解,一旦安装了软件包(使用pip install .
),到达目标文件夹就变得更加复杂:
/usr/local/bin/python3/dist-packages/myApp/myApp/conf.json
(与上面类似)
conf.json
中。数据:
configVals: {
123453: {
'type': 'engine-params',
'baudrate': 115200,
'baud': 500
},
245633: {
// similar to above
}
}
以上内容应通过结构中的各个键附加到conf.json
上。
conf.json
中的信息更新为启用/禁用某些功能数据:
previously
{
"gps": {
"active": true
}
}
now
{
"gps": {
"active": false
}
}
我正在考虑为用户制作命令行工具:
change-config --system gps --key active --value false
或
change-config --configVals --list {1234}
可能带有kwargs
和argParse
,但发现kwargs
不能像Python函数一样工作。
是否有一些开源实现与我的要求类似?
我可以在conf.json
中添加/etc/myApp/
,用户可以在那里进行更新。
答案 0 :(得分:1)
我觉得这个问题与python无关,而与软件部署/发行有关。我也很强烈地希望您在这里请求软件推荐而不是代码,因此我希望将其转移到Software Recs。无论如何,这是我的建议:
请勿在python软件包中包含配置文件。如果使用工具定位* nix系统,请从/etc/
,用户主目录或环境变量中设置的某些文件中读取配置文件。所有这些都是访问配置文件的事实上方法,用户希望您的软件遵循其中的一种(就个人而言,当我不得不使用不需要配置文件的程序时,这让我很痛苦。遵守此约定)
要通过命令行操作JSON文件,请使用jq。如果要使用户的生活更轻松,可以编写自己的程序,该程序从命令行读取并保存到JSON文件中。我不知道使用python工具可以做到这一点,但是编写一个工具应该并不难。如果您要这样做。
sed
或perl
或任何不暗示具有“配置工具”的方法。