使用可执行权限打包\u数据文件

2024-05-17 14:33:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用distutils创建Python(2)包安装程序。在我的包中有两个二进制可执行文件,它们从Python代码中调用。我在我的setup.py文件中将它们列为package_data,以便它们与包一起安装。但是,安装这些文件时,distutils不会复制这些文件的可执行权限位。有没有办法强制distutils安装具有可执行权限的package_data文件?在


Tags: 文件代码py可执行文件权限packagedatasetup
2条回答

根据其他一些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}传递给setup。在

也可以使用setuptools代替distutils。setuptools保留包数据文件的文件模式,而distutils没有

相关问题 更多 >