Инструмент командной строки в Python для обновления / добавления файла конфигурации json - PullRequest
0 голосов
/ 11 сентября 2018

Требования

Я создаю модуль Python3, который я хочу перенести на встроенную плату (используя Yocto) и использую setuptools, а не PyPi.

У меня есть файл conf.json, который находится в основной папке модуля:

 myApp
| -- submodule-1
| -- submodule-2
| -- main.py
| -- conf.json

Причиной такого выбора файла conf.json является учебник Python Packaging , в котором упоминается не кодовые файлы

Это становится немного сложнее, поскольку я понимаю, что после установки пакета (с использованием pip install .) папка назначения становится более сложной для доступа:

/usr/local/bin/python3/dist-packages/myApp/myApp/conf.json

(что-то похожее на выше)

Использование

  1. Существует особый случай, когда изначально пользователь приложения запускает некоторые двоичные файлы, чтобы получить некоторую релевантную информацию о процессе, и должен добавить их к conf.json позже.

Данные:

configVals: {

   123453: {
      'type': 'engine-params',
      'baudrate': 115200,
      'baud': 500
   },
   245633: {
       // similar to above
   }
}

Это выше должно быть добавлено к conf.json с некоторым соответствующим ключом в структуре.

  1. Обновление информации в 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.

Существует ли какая-то реализация с открытым исходным кодом, которая соответствует моим требованиям?

Last Resort

Я могу добавить conf.json в /etc/myApp/, и пользователь может обновить его там.

1 Ответ

0 голосов
/ 11 сентября 2018

Я чувствую, что этот вопрос не столько о питоне, сколько о развертывании / выпуске программного обеспечения. У меня также есть сильное ощущение, что вы спрашиваете здесь о рекомендациях по программному обеспечению, а не о коде, поэтому я надеюсь, что этот перевод был перенесен на Software Recs . В любом случае, вот мой совет:

  1. Не включайте файлы конфигурации в ваш пакет python. Если вы ориентируетесь на системы * nix с помощью своего инструмента, прочитайте ваши файлы конфигурации из /etc/, домашнего каталога пользователя или некоторого набора файлов в переменной среды. Все это - де-факто способов доступа к файлам конфигурации, и пользователи будут ожидать, что ваше программное обеспечение будет придерживаться одного из них (лично мне больно, когда мне приходится использовать программу, которая не соответствует с этим соглашением)

  2. Для управления файлами JSON через командную строку есть jq . Если вы хотите облегчить жизнь своим пользователям, вы можете написать свою собственную программу, которая читает из командной строки и сохраняет в файл JSON. Я не знаю ни одного инструмента Python, чтобы сделать именно это, но его не должно быть слишком сложно написать. Если вы собираетесь это сделать.

    2.1 Используйте , нажмите , чтобы проанализировать вашу командную строку. 2.2 Используйте docopt , это просто

  3. Наконец, я бы советовал вам придерживаться моего совета в (1) и , также позволяйте вашим пользователям редактировать файл конфигурации с помощью своего любимого редактора. * Пользователи nix вполне довольны редактированием файлов конфигурации вручную, или с использованием sed, или perl, или любым другим способом, который не подразумевает наличие «инструмента конфигурации».
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...