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,而不是整个映像——可能吗?
如果系统相似,就像您在评论中指出的那样,那么这很有可能做到。您可能会错过的是/usr/lib/python2.7
or/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分钟。
您还可以通过指定--prefix
to重新编译到指定的未使用目录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 python27
2.7.2 特定脚本顶部的行。
在所有这些中,您需要知道您不能自由地从配置时指定的位置移动文件,因为某些路径被编译到可执行文件/库中,但是您可以从一个合理的位置(某些目录在你的$PATH
)。