将静态嵌套目录安装到前缀(或至少包含在 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)
)
我正在尝试让我的 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)
)