【问题标题】:Python executable running on different linux versions在不同 Linux 版本上运行的 Python 可执行文件
【发布时间】:2019-05-19 00:07:23
【问题描述】:

我需要编写一个最终将在 CentOS 上运行的程序(版本 6.3 - 它是一个安全设备,但我有 root 访问权限) 我在 Ubuntu 中安装了一个开发环境,并使用 pyinstaller 创建了一个可执行文件。在 PyCharm 中,我可以在 python 版本 2.7 和 3.6 之间进行选择 - 我尝试了两者并创建了 exe。 该程序在 Ubuntu 上运行良好,但不幸的是不能在 CentOS 下运行 CentOS 向我展示了 Python 版本 2.66

问题: - 它应该一般工作吗? - 我收到错误 - (缺少库)(但文件存在): “./ICC: /lib64/libc.so.6: 找不到版本‘GLIBC_2.14’(/tmp/_MEIoHOzeE/libz.so.1 要求)” - 我假设版本不匹配?

  • 在 CentOS (2.66) 上安装 python 版本是否重要(我希望可执行文件包含所需的一切?)

  • 我使用带有选项“--onefile”的pyinstaller

  • 我在源代码的第一行添加了“#!/usr/bin/python”

  • 如果我运行 .py 文件(源代码),我会收到多个错误:

    ./ICC.py:第 1 行:导入:找不到命令 ./ICC.py:第 2 行:导入:找不到命令 ./ICC.py:第 13 行:版本:找不到命令 ./ICC.py: 第 24 行: try:: command not found ./ICC.py:第 25 行:意外标记附近的语法错误 (' ./ICC.py: line 25: logfile = open ("/tmp/icm-log.txt","w")'

(相同的代码在 ubuntu 上运行良好,猜测在较新的 python 版本中发生了变化,这将是有意义的)

  • 我需要用 Python 2.66 编写程序吗?我需要将开发转移到 CentOS 吗?

  • 我无法在 CentOS 上升级 Python,因为它可能会破坏其他东西

关于如何完成这项工作的任何建议、想法和提示。

TIA 马丁

【问题讨论】:

    标签: python ubuntu centos version


    【解决方案1】:

    当您使用 PyInstaller 创建可执行二进制文件时,您必须在目标机器或目标环境上执行此操作。

    PyInstaller 的输出特定于活动操作系统和 Python 的活动版本。这意味着要为以下内容准备分发:

    • 不同的操作系统
    • 不同版本的 Python
    • 32 位或 64 位操作系统

    你在那个操作系统上运行 PyInstaller,在那个版本的 Python 下。执行 PyInstaller 的 Python 解释器是包的一部分,它特定于操作系统和字长。”

    更多信息here

    【讨论】:

    • 感谢闪电般的快速回答 :-) 还有一个问题:我可以在运行 python 2 的机器上运行我的 Python 3 程序吗?你知道吗?
    • 如果其他一切都相同,即相同的操作系统、相同的库等,那么是的。事实上,你甚至可能根本没有在目标计算机上安装 python,因为它不会使用它。当 PyInstaller 创建一个可执行文件时,它会将整个 python 解释器打包。因此,如果您使用 Python 3 在 ubuntu 上进行编译,然后将您的可执行文件部署到另一台具有相同库但根本没有安装 python 或安装了不同版本的 python 的 ubuntu 计算机上,它将正常工作。
    • 谢谢!所以我做了一个VM的副本并尝试在这里安装Python,希望我可以在这里创建exe文件并将其复制到另一台机器上。我最终得到这个:Python-3.6.0]# ./configure 检查构建系统类型... x86_64-unknown-linux-gnu 检查主机系统类型... x86_64-unknown-linux-gnu 检查 python3.6。 ..不检查python3...不检查python...python检查--enable-universalsdk...不检查--with-universal-archs...不检查MACHDEP...linux检查- -without-gcc... 不检查 --with-icc... 不检查 gcc... 不 ....
    猜你喜欢
    • 1970-01-01
    • 2015-08-21
    • 2015-08-13
    • 2013-05-08
    • 2014-02-09
    • 2018-02-21
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多