gpt4 book ai didi

python - 在 Linux 中创建独立于系统的最小 Python 足迹

转载 作者:太空狗 更新时间:2023-10-29 12:21:38 33 4
gpt4 key购买 nike

我的意图是尝试编译这样一个 Linux Python 最小基础,它是完全可移植的,并且是系统独立的(这意味着它甚至根本不与系统安装的 Python 基础交互)。

它在 Windows 下相对容易完成,只需要 Python 二进制文件和最小的自定义模块集,这些模块由这个可移植的 Python 库加载。

然而,我在 Linux 下也很难达到这个目标,因为从头开始编译 Python 仍然会从系统(例如/usr/lib/python2.6)而不是从它自己的 Lib 子目录加载模块,一旦我将这个 Python 库移到别处,它就找不到它了。

如果可能的话,有没有一种方法可以将“python”编译为可执行,以用于更多基于 Linux 的发行版,而不是我编译的发行版?

编辑:实际上,当我尝试将 python2.6(或只是 python)移动到已经设置好的 Python 基础(它在 Windows 下正常工作,但它输出
Could not find platform independent libraries <prefix><br/>
Could not find platform dependent libraries <exec_prefix><br/>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] under Linux instead.

据我所知,这可能与 LIBDIR 设置为 (exec_prefix)/lib/python$(VERSION) 有关。而不是 (exec_prefix)/lib这是我最近设置的。

有没有办法定义要读取的文件夹和文件,而不是默认的? Makefile 正确处理它(make 和 make install 将它放入正确的 lib 文件夹中)。但是当使用 farfromhome 的 print pth 时方法,它仍然倾向于从 /home/arnold/Python/lib/python2.6 加载而不是 /home/arnold/Python/lib .

有没有办法强制python加载自定义 LIBDIR 路径而不是默认路径?

注意:此安装的文件和文件夹结构与现有的 Linux 或 Windows Python 安装不同

最佳答案

按照您自己的建议使用 --prefix 是可行的。我使用 --prefix=/usr/local 编译了 Python 2.7.1,并在以下位置运行生成的二进制结果:

Python 2.7.1 (r271:86832, Jan 31 2011, 11:06:01) 
[GCC 4.5.1 20100924 (Red Hat 4.5.1-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for pth in sys.path:
... print pth
...

/usr/local/lib/python27.zip
/usr/local/lib/python2.7
/usr/local/lib/python2.7/plat-linux2
/usr/local/lib/python2.7/lib-tk
/usr/local/lib/python2.7/lib-old
/usr/local/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/site-packages

请注意,没有对 /usr/lib 的单一引用,只有 /usr/local/lib。而且这在编译过程中或之后没有做任何其他事情。

关于python - 在 Linux 中创建独立于系统的最小 Python 足迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4854787/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com