我正在使用distutils创建Python(2)软件包安装程序.在我的程序包中有几个二进制可执行文件,这些二进制可执行文件是从我的Python代码调用的.我将这些作为package_data列出在我的setup.py文件中,以便它们与软件包一起安装.但是,在安装这些文件时,distutils不会在这些文件上复制可执行权限位.有没有办法强迫distutils安装具有可执行权限的package_data文件?
解决方法:
根据其他一些SO答案弄清楚了它-以下工作原理:
class my_install_lib(distutils.command.install_lib.install_lib):
def run(self):
distutils.command.install_lib.install_lib.run(self)
for fn in self.get_outputs():
if <this is one of the binaries I want to be executable>:
# copied from distutils source - make the binaries executable
mode = ((os.stat(fn).st_mode) | 0555) & 07777
distutils.log.info("changing mode of %s to %o", fn, mode)
os.chmod(fn, mode)
然后将cmdclass = {‘install_lib’:my_install_lib}传递给安装程序.