python - 在其他 Linux 计算机上运行已编译的 Linux 可执行文件

标签 python linux python-2.7 executable pyinstaller

我一直在开发一个自定义程序,它允许我控制我网络上的其他基于 Linux 的计算机。我一直在使用 Python 并使用 PyInstaller 将代码编译成 Linux 可执行文件。 在我自己的计算机上运行可执行文件工作得很好并且完全按照预期进行。但是一旦我将它发送到另一台计算机进行测试,我就会收到此错误。

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.25' not found (required by /tmp/_MEIXcUz91/libudev.so.1)
[3716] Failed to execute script RP

还有我用PyInstaller编译代码的命令

python pyinstaller.py -D -F -n RP -c RP.py

同样,可执行文件在我用来创建和编译它的计算机上运行完美,但是一旦我将它发送到我的另一台基于 Linux 的计算机并执行它,它就会崩溃。

最佳答案

问题是你在两台机器上有不同的 C 系统库。移植预构建的二进制文件时有时会遇到困难。您要么确保您使用的是相似的环境,要么将所有依赖项放入二进制文件中——这可能会显着增加其大小。要执行后者,您需要在编译期间使用“--static”关键字。不过,我不确定这是否足够。

编辑:

由于这是一个纯 Python 项目,您应该确保使用的 Python 版本是兼容的,即相同的 Python 版本和相同的 Python 构建(CPython 等)。

关于python - 在其他 Linux 计算机上运行已编译的 Linux 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47212940/

相关文章:

python - 如何列出忽略模块导入函数的 Python 模块的所有函数?

python - 使用 scikit-learn 进行多目标回归

linux - 如何计算csv文件标题中的列数?

python-2.7 - Amazon EMR Pyspark : rdd. unique.count() 失败

python - 从 python 2.7 中的包导入名称、子模块或子包的优先级是什么?

python - 使用 python 在 opencv 中显示 imshow 不是交互式的

python - 如何在 python 中关闭 ssh 隧道

linux - 在 Linux 中的 i2c 总线上配置图像传感器设备

linux - 使用 Chef 配方将多行附加到配置文件

Python 字符串正则表达式