【发布时间】:2011-01-31 18:52:15
【问题描述】:
我的目的是尝试编译这样一个 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>
Could not find platform dependent libraries <exec_prefix>
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 安装不同
【问题讨论】:
-
从头开始编译 Python 仍然会从系统中加载模块什么?如果是这样,你就做得不对。
-
我尝试使用 --prefix 标志来指示要配置的路径,然后输入“make install”以在此处“安装”它。但是,我不确定这是否会使编译后的 Python 安装减少对“前缀”路径文件夹的依赖。
标签: python linux portable-executable