如何让setuptools在部署支持二进制文件时设置可执行位?

4 投票
1 回答
764 浏览
提问于 2025-04-16 23:16

我正在使用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目录。

撰写回答