Python 关于在各种架构和操作系统上运行可执行文件的问题

Python 关于在各种架构和操作系统上运行可执行文件的问题,python,docker,pyinstaller,executable,Python,Docker,Pyinstaller,Executable,我正在开发一个python代理,我想在各种环境(基本上是不同的docker映像,但不一定)上本机运行它。但我真的不知道在这个低水平的领域里事情是如何运作的 我使用pyinstaller编译了这个项目,它在我的机器上成功运行。 在文档中,有人写我应该在我想运行它的机器上编译项目,但我确实想为可执行文件准备各种版本,以便它能够提前在它们上运行,但我不知道我需要考虑哪些标准 如果我想在各种docker映像上运行代理,我需要注意哪些规范?建筑学操作系统?GCC版本?基本图像 编译尽可能多的二进制文件以支

我正在开发一个python代理,我想在各种环境(基本上是不同的docker映像,但不一定)上本机运行它。但我真的不知道在这个低水平的领域里事情是如何运作的

我使用pyinstaller编译了这个项目,它在我的机器上成功运行。 在文档中,有人写我应该在我想运行它的机器上编译项目,但我确实想为可执行文件准备各种版本,以便它能够提前在它们上运行,但我不知道我需要考虑哪些标准

如果我想在各种docker映像上运行代理,我需要注意哪些规范?建筑学操作系统?GCC版本?基本图像

编译尽可能多的二进制文件以支持各种docker映像的最佳方法是什么

例如,如果我在alpine image上编译项目,是否意味着它将在所有基于alpine的docker映像上运行

欢迎任何建议


谢谢

如果您只有一个Python脚本,那么该脚本本身(可能)是可移植的,并且可以在任何体系结构的任何操作系统上运行,任何体系结构都有Python解释器。这不是一个困难的要求——Linux和MacOS系统通常都预装了Python——如果可移植性对您很重要,我会尽可能接近纯Python环境

一旦您将Pyinstaller引入到图片中,您就创建了一个不可移植的二进制工件。您将需要在每个不同的操作系统和要运行Pyinstaller的不同体系结构(Linux/x86、Linux/ARM、MacOS/x86、MacOS/ARM、Windows/x86,以及可能在Linux上分别运行musl[Alpine]和glibc[Debian]版本)上重新运行Pyinstaller。在这方面真的没有捷径可走


原则上,Docker看起来可以通过在Linux下运行一切来简化这一过程。您仍然需要创建单独的x86和ARM工件。一旦它嵌入到Docker映像中,就不需要为不同的Linux发行版创建单独的构建,只需要运行预编译映像。但是,主机需要安装Docker(默认情况下,它几乎肯定不会安装Docker),并且根据您的代理具体报告的内容,在隔离环境中运行(在非Linux主机上的Linux虚拟机中)可能会阻碍Docker的运行。

我的意思是,我将在现有(客户的)Docker映像上运行代理,所以我需要为每个Linux发行版创建一个?总而言之,我需要为每个发行版(alpine、fedora…)和两种体系结构(x86和ARM)以及glibc和musl创建一个工件?这些是参数吗@David MazeThe我在客户的docker映像中运行它是我需要使用pyinstaller的原因(因为docker映像不一定包含python)