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

时间:2015-03-20 17:37:40

标签: installation setuptools distutils

我正在尝试将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文件,所以它不会包含它们。目前"数据"目录包含在EGG中,但没有子目录。

1 个答案:

答案 0 :(得分:0)

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