将静态嵌套目录安装到前缀(或至少包含在 setuptools 包中)

Install static nested directories to prefix (or at least include in setuptools package)

我正在尝试让我的 setup.py 安装目录到 /usr/share(或不同的前缀,或者至少让我的脚本从 EGG 文件中复制它)。

我的项目的目录结构如下所示:

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

我尝试将 'data' 添加到 MANIFEST.in:

recursive-include data *
recursive-include themer *

setup.py:

include_package_data=True,

但是因为它是一个嵌套的目录结构并且那里没有 python 文件所以它不会包含它们。目前 "data" 目录包含在 EGG 中,但 none 个子目录包含在 EGG 中。

好吧,我最终编写了我自己的 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)
)