将 Python 升级到 2.7.2

std*_*err 2 embedded python upgrade

我有一个正在运行的嵌入式系统Python 2.6.5,我希望它升级到2.7.2(我有一个运行不同内核的正在运行的系统2.7.2)。我已经复制了二进制文件,但它告诉我:python: can't load library 'libpython2.7.so.1.0'当我尝试启动它时 - 很好,我也抓住并复制了它,现在我得到:

# python
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

我怎样才能Python 2.7.2在保持旧的原始内核的同时升级到这个系统——我只想更新 Python,而不是整个映像——可能吗?

Ant*_*hon 5

如果系统相似,就像您在评论中指出的那样,那么这很有可能做到。您可能会错过的是/usr/lib/python2.7or/usr/local/lib/python2.7以及其下的文件 - 如果您从中复制了可执行文件 python2.7,/usr/bin那么很可能是前者,如果是从/usr/local/bin最有可能是后者。

在 Linux 上编译 Python 时,您可以为许多部分(--bindir可执行文件、--mandir手册页等)指定配置选项,但很可能您没有指定任何选项,只是./configure在运行make. 如果您的运行./configure --help可以看到默认值--prefix是什么,其余的都是相对的,但其他文件也会在那里。

要了解的一切,你可以触摸所有的源,编译和安装find(从默认目录configure--prefix选项),任何安装的最后X分钟。

您还可以通过指定--prefixto重新编译到指定的未使用目录configure,这样除了您需要复制的文件外,没有其他文件:

 cd Python-2.7.2
 make clean  # might fail ignore
 ./configure --prefix=/opt/py272
 make
 sudo make install
Run Code Online (Sandbox Code Playgroud)

之后,您可以将所有内容压缩/opt/py272(假设在开始编译之前没有任何内容)并将其复制到目标系统并将内容提取到/opt/py272.

在目标系统上,您还可以链接/usr/bin/python27到,/opt/py272/bin/python以便您可以使用#! /usr/bin/env python272.7.2 特定脚本顶部的行。

在所有这些中,您需要知道您不能自由地从配置时指定的位置移动文件,因为某些路径被编译到可执行文件/库中,但是您可以从一个合理的位置(某些目录在你的$PATH)。