如何让setuptools在部署支持二进制文件时设置可执行位?
我正在使用setuptools来创建一个egg包,我想把一些支持的二进制文件也放进去,最好是能安装在egg包的目录里。
我可以用data_files
或者package_data
来包含这些文件,但在部署的时候,它们的可执行权限没有被设置好。
另外,我可以使用scripts
,但这样的话,它们默认会被放到一个所有其他包都共享的公共目录里,我不想这样。
我该如何把这些二进制文件和我的包一起部署,并确保它们的文件权限被保留呢?
1 个回答
3
在Linux系统中,通常把一些辅助程序放在/usr/libexec
这个地方。所以你可以在这个目录下新建一个文件夹,使用数据文件选项。确保你的源文件中的这些文件有可执行权限(+x),这样权限就会被保留。你只需要在你的设置函数中放入类似下面的内容:
data_files=[(os.path.join(sys.prefix, 'libexec', 'myproject'), glob("libexec/*"))],
并在你的项目中创建一个libexec
目录。