具有可执行权限的package_data文件

ajd*_*ajd 5 python distutils setup.py

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

ajd*_*ajd 3

根据其他一些答案找到了答案 - 以下是有效的:

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)
Run Code Online (Sandbox Code Playgroud)

然后传递cmdclass={'install_lib':my_install_lib}setup.