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



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

我使用pyinstaller编译了这个项目,它在我的机器上成功运行。在文档中,我应该在我想运行的机器上编译项目,但我确实想为可执行文件准备各种版本,这样它就可以提前在上面运行,但我不知道我需要考虑的标准是什么。

如果我想在各种docker图像上运行代理,我需要注意哪些规格?建筑学OS?GCC版本?基础图像?

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

例如,如果我在alpine图像上编译项目,这是否意味着它将在所有基于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](。真的没有任何捷径可走。

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

最新更新