Раздражать файлы package_data и копировать их в текущий рабочий каталог - PullRequest
0 голосов
/ 30 апреля 2020

Фон

Я разрабатываю пакет python с примерно следующей структурой каталогов:

mossutils/
  setup.py
  mossutils/
    __init__.py
    init.py
    data/
      style.css
      script.js
      ...

setup.py моего пакета объявляет console_scripts и включает в себя package_data файлы :

setup(
  name='mossutils',
  packages=['mossutils'],
  package_data={"mossutils": ["data/*"]},
  entry_points = {
    "console_scripts": ['mu-init = mossutils.init:main']
  },
  ...)

Установка пакета через pip install работает как положено: все установлено в моем Python Lib\site-packages, включая каталог data и все файлы в нем, а также скрипт mu-init можно выполнить из оболочки (точнее, из командной строки, поскольку я использую Windows).

Цель

Сценарий mu-init должен выполнять какой-то проект строительные леса в текущем рабочем каталоге, из которого он вызывается. В частности, он должен скопировать все package_data файлы (data/style.css, data/script.js, ...) в текущий каталог.

Решение Попытка

Использование модуля pkgutil, я могу прочитать содержимое файла, например,

import pkgutil
...
data = pkgutil.get_data(__name__, "data/style.css")

Вопросы

  1. Есть ли способ для моего init.py сценария на перебирать содержимое каталога data, без жесткого кодирования имена файлов (в init.py)?

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

...