簡體   English   中英

具有可執行權限的package_data文件

[英]package_data files with executable permissions

我正在使用distutils來創建一個Python(2)包安裝程序。 在我的包中有一些二進制可執行文件,可以從我的Python代碼中調用。 我在setup.py文件中將這些列為package_data ,因此它們隨包一起安裝。 但是,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}傳遞給setup

您也可以使用setuptools而不是distutils。 setuptools保留package_data文件的文件模式,而distutils則不保存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM