如何获取setup.py以仅复制与目标平台匹配的源和二进制文件

问题描述

问:如何获取 setup.py 以安装与目标相对应的 ONLY 二进制文件平台。

背景:我的Python项目包含使用 subprocess.run()在子进程中运行的帮助程序的预先存在的二进制文件。因为我们的代码旨在部署到多个OS平台,所以部署到的每个目标平台都有一个目录,如下所示的目录树。

实际的python源代码能够使用 platform.system() platform.machine() 选择合适的二进制文件在运行时使用。

我的开发系统上存在的文件树:

? PycharmProjects
    ? pythonProject
           ? external_apps_bin
                ? linux64
                    ? amd64
                        ? app1
                        ? app2
                        ? app3
                    ? arm64
                        ? app1
                        ? app2
                        ? app3
                    ? i686
                        ? app1
                        ? app2
                        ? app3
               ? macos64
                    ? app1.app
                    ? app2
                    ? app3
               ? win64
                    ? app1.exe
                    ? app2.exe
                    ? app3.exe
          ? src

目标/预期结果:

用户使用 pip 安装 .whl软件包时,我想避免所有其他平台的无用二进制文件占用大量存储空间。 / p>

例如,如果我在MacOS机器上,我希望安装后的文件树看起来像这样:

我要用于MacOS系统的安装文件树:

? PycharmProjects
    ? pythonProject
           ? external_apps_bin
               ? macos64
                    ? app1.app
                    ? app2
                    ? app3
          ? src

尽管该软件安装在具有i686处理器的Linux平台上,但我希望它显示在该文件树中。

我要用于Linux i686系统的安装文件树:

? PycharmProjects
    ? pythonProject
           ? external_apps_bin
                ? linux64
                    ? i686
                        ? app1
                        ? app2
                        ? app3
          ? src

我尝试过的事情:

我尝试在 setup.py 内使用 if条件,该函数对platform.system()和platform.machine()进行调用以更改MANIFEST中的文件夹列表.IN。

方法失败了,因为setup.py在BUILD计算机上运行,​​而不是在INSTALL目标上运行,因此,无论INSTALL目标平台是什么,它始终仅包含与BUILD系统目标匹配的文件

什么是确保仅针对安装目标平台的正确目录并保留在安装目标计算机上的正确方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)