在Linux中创建独立于系统的最小Python占用空间
我的意图是尝试编译这样一个Linux-Python最小库,它是完全可移植的,并且与系统无关(这意味着它甚至根本不与系统安装的Python库交互) 它是在Windows下相对容易地完成的,除了Python二进制文件,以及由这个可移植的Python库加载的一组最小但自定义的模块 然而,对于我来说,在Linux下也很难达到这个目标,因为从头编译Python仍然会从系统(例如/usr/lib/python2.6)加载模块,而不是从它自己的lib子目录加载模块,一旦我将Python库移到别处,它就找不到模块 如果可能的话,有没有一种方法可以将“python”编译成比我编译的版本更适合于基于Linux的发行版的可执行版本 编辑:实际上,当我尝试将python2.6(或仅python)移动到已经设置好的python库中时,问题就出现了(python库在Windows下正常工作,但它会输出在Linux中创建独立于系统的最小Python占用空间,python,linux,portable-executable,Python,Linux,Portable Executable,我的意图是尝试编译这样一个Linux-Python最小库,它是完全可移植的,并且与系统无关(这意味着它甚至根本不与系统安装的Python库交互) 它是在Windows下相对容易地完成的,除了Python二进制文件,以及由这个可移植的Python库加载的一组最小但自定义的模块 然而,对于我来说,在Linux下也很难达到这个目标,因为从头编译Python仍然会从系统(例如/usr/lib/python2.6)加载模块,而不是从它自己的lib子目录加载模块,一旦我将Python库移到别处,它就找不到模
找不到与平台无关的库
找不到与平台相关的库
考虑在Linux下设置$PythOnHuto到[]:.< /代码>
据我所知,这可能与LIBDIR被设置为(exec\u prefix)/lib/python$(VERSION)
有关,而不是我最近设置的(exec\u prefix)/lib
有没有一种方法可以定义从哪些文件夹和文件中读取,而不是从默认的文件夹和文件中读取?Makefile可以正确地处理它(make和make install将其放置到正确的lib文件夹中)但是当使用farfromhome的print pth
方法时,它仍然倾向于从/home/arnold/Python/lib/python2.6
加载,而不是从/home/arnold/Python/lib
加载
有没有办法强制python加载自定义LIBDIR路径而不是默认路径
注意:此安装的文件和文件夹结构不同于使用--prefix
的普通Linux或Windows Python安装,正如您自己建议的那样。我使用--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仍然会从系统加载模块什么?如果这样做了,您做得不正确。我尝试使用--prefix标志来表示path进行配置,然后输入“make install”在那里“install”。但是,我不确定这是否会使编译后的Python安装减少对“prefix”路径文件夹的依赖性。对Python 2.6也进行了验证。当我重新编辑我的问题时,我达到了一个点,它首先以递归方式加载,然后以绝对方式(按路径名)加载但是,python
倾向于从默认路径名的LIBDIR模块加载,而不是从Makefile中定义的路径名加载。