Python 在使用egg部署一些支持的二进制文件时,如何让setuptools设置可执行位?

Python 在使用egg部署一些支持的二进制文件时,如何让setuptools设置可执行位?,python,linux,setuptools,Python,Linux,Setuptools,我正在使用setuptools创建一个egg,我想在其中包含一些支持的二进制文件,最好安装在egg目录中 我可以将这些文件与数据\u文件或包\u数据一起包含,但是在部署这些文件时未设置可执行位 或者,我可以使用脚本,但是它们(默认情况下)将被部署到一个公共目录,该目录由所有其他包共享,我希望避免这样做 如何在包中部署这些二进制文件并确保保留它们的文件模式?在Linux中放置支持二进制文件的常用(标准)位置是/usr/libexec。所以您可以使用data_files选项在其下创建一个目录。在源代

我正在使用setuptools创建一个egg,我想在其中包含一些支持的二进制文件,最好安装在egg目录中

我可以将这些文件与
数据\u文件
包\u数据
一起包含,但是在部署这些文件时未设置可执行位

或者,我可以使用
脚本
,但是它们(默认情况下)将被部署到一个公共目录,该目录由所有其他包共享,我希望避免这样做

如何在包中部署这些二进制文件并确保保留它们的文件模式?

在Linux中放置支持二进制文件的常用(标准)位置是
/usr/libexec
。所以您可以使用data_files选项在其下创建一个目录。在源代码中设置文件+x,应保留权限。只是放一些像

data_files=[(os.path.join(sys.prefix, 'libexec', 'myproject'), glob("libexec/*"))],

在您的设置函数中,以及项目中的
libexec
目录中。

我希望将文件保存在我的egg目录中,以便egg完全独立,删除目录之类的操作可以摆脱一切,而不是把东西留在中央目录中,比如
/usr/libexec
…这就是包管理器的用途。或卸载程序。不幸的是,我认为setuptools还不支持卸载。您还可以创建RPM或dpkg,而不是鸡蛋。然后安装它,并选择卸载。这就是在Linux平台上管理软件的方式。