Установить статические вложенные каталоги в префикс (или хотя бы включить в пакет setuptools)

Я пытаюсь сделать setup.py установить каталог в /usr/share (или в другом префиксе, или, по крайней мере, пусть мой скрипт скопирует его из файла EGG).

Структура каталогов моего проекта выглядит примерно так:

- setup.py
- MANIFEST.in
- myproj
  - __init__.py
  - sompekg
     - __init__.py
- data
  - dirA
     - dirB
       - somefile
  - somefile

Я попытался добавить "данные" в MANIFEST.in:

recursive-include data *
recursive-include themer *

или в setup.py:

include_package_data=True,

но поскольку это вложенная структура каталогов и там нет файлов python, она не будет их включать. На данный момент каталог "data" включен в EGG, но ни один из дочерних каталогов не является.

1 ответ

Решение

Хорошо, я закончил писать свой собственный install замена, которая вызывает регулярный setuptools.commands.install и после этого копирует мой файл. Вот соответствующие части моего setup.py:

from setuptools.command.install import install
class new_install(install):
  def run(self):
     install.run(self) # invoke original install
     self.mkpath('/usr/share/themer')
     self.copy_tree('data/default', '/usr/share/themer/default')
     self.mkpath('/usr/share/fish/completions')
     self.copy_file('data/fish/themer.fish', '/usr/share/fish/completions/')

setup(
 #... whatever else you got here
 cmdclass=dict(install=new_install)
)
Другие вопросы по тегам