我正在使用 distutils 创建 Python (2) 包安装程序。在我的包中有几个二进制可执行文件,它们是从我的 Python 代码中调用的。我将这些列package_data
在我的setup.py
文件中,以便它们与包一起安装。但是,distutils 在安装这些文件时不会复制这些文件的可执行权限位。有没有办法强制 distutils 安装package_data
具有可执行权限的文件?
问问题
1213 次
2 回答
3
根据其他一些 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
.
于 2013-08-23T19:42:57.113 回答
2
您也可以使用setuptools而不是 distutils。setuptools 保留 package_data 文件的文件模式,而 distutils 没有。
于 2015-11-02T19:23:48.573 回答