Умный способ создавать (или не создавать их) папки с setup.py и Python? - PullRequest
0 голосов
/ 06 сентября 2018

Я создаю небольшое программное обеспечение для командной строки (скажем, оно называется Stanley ) и упаковываю его с setuptools . В основном мой проект выглядит так:

Stanley / __init__.py
        / foo.py
        / bar.py
        / datafiles / preference_file_1.metadata
                    / ...
                    / preference_file_n.metadata         
LICENSE
MANIFEST.in
README.md
setup.cfg
setup.py

Stanley должен создать некоторые файлы предпочтений в файлах данных папки, но не может импортировать существующие файлы предпочтений (например, используя аргумент data_files из setuptools.setup()), поскольку они будут содержать информацию, предоставленную пользователями после установка. Более того, я не могу заранее создать пустые файлы, потому что не могу заранее сказать, сколько из этих файлов будет создано.

Мне нужно, чтобы эта папка создавалась один раз, при установке Stanley . Любой файл, созданный Stanley в этой папке, должен оставаться неизменным при каждом обновлении. То есть, когда пользователь запустит $ pip3 install stanley --upgrade, все настройки, содержащиеся в файлах данных папки, будут сохранены. Итак, мои вопросы:

1) Как создать файлы данных каталога с помощью setuptools? 2) Как убедиться, что файлы, созданные моим программным обеспечением в файлах данных, не будут изменены и по-прежнему будут доступны в файлах данных после переустановки или обновления?

Обратите внимание, что я впервые программирую «настоящее» программное обеспечение, включая кодирование, тестирование, упаковку, распространение (хотя PyPi и Python делают для меня много работы) и т. Д. Поэтому я не знаю о многих хорошие практики, и если вы скажете мне, что мой нынешний способ управления пользовательскими настройками не является правильным, я был бы рад изменить его, чтобы он соответствовал более высоким стандартам. Также, если моя проблема не ясна, я здесь, чтобы вы поняли это.

Большое спасибо.

1 Ответ

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

Мне не совсем ясно, каков ваш сценарий использования этих файлов данных, но они кажутся файлами предпочтений пользователя, и в этом случае правильнее всего сохранить их в домашнем каталоге пользователя, вдали от вашего код пакета. Используйте appdirs , чтобы определить правильный путь, в котором ваше приложение должно хранить файлы.

  1. Как создать файлы данных каталога с помощью setuptools?

Не создавайте их с помощью setuptools; напишите свой пакет, чтобы он создавал файлы в нужном месте, когда они нужны.

  1. Как убедиться, что файлы, созданные моим программным обеспечением в файлах данных, не будут изменены и по-прежнему будут доступны в файлах данных после переустановки или обновления?

Файл хранится вне кода вашего пакета, поэтому на него не влияют деинсталляции или обновления.

...