从virtualenv环境中的源代码tarball构建的可重定位(自包含)Python?

时间:2013-04-15 16:21:29

标签: python python-2.7 virtualenv

我查看了virtualenv文档,还找到了this question here at StackOverflow。但是,既没有回答我的问题,也没有回答我的问题,所以我在问。

如何创建包含virtualenv的{​​{1}}环境,该环境不依赖于“主机”的(系统范围)python?即我想要一个完全自包含的python,它有自己的源代码编译的Python 2.7。另一个属性很重要:由于virtualenvvirtualenv不同,chroot内的python必须处理不同的绝对路径。

我认为最接近我想要的是virtualenv里面有自己的Python安装。

我怎样才能做到这一点?

原理

我有一些较旧的Linux盒子,通过包管理器提供不同版本的Python。管理员不允许我在盒子上构建一个更新的Python,所以我需要能够将Python从源代码安装到我所拥有的受限环境中。

我需要的属性:

  • virtualenv --relocatable环境应完全自包含(完整的Python与所有库等)
  • virtualenv内部应该可以正常工作,无论其部署时的绝对路径如何
    • 我知道python似乎是这样做的,但它似乎也依赖于系统范围内安装的$ENV/bin/python。我想完全削减这种依赖,滚动我自己的Python。
  • 应该与python一样,但也需要包含完整的Python安装。

此问题的范围可以忽略的问题:

  • 建筑/平台。这将仅在单一架构上运行,并且将为每个平台(目前只有各种Linux发行版)构建virtualenv --relocatable环境。

1 个答案:

答案 0 :(得分:7)

  1. 获取python源
  2. ./configure --prefix=/dest
  3. make && make install
  4. 恭喜,您现在有一个python安装,完全独立于/dest中的系统python。移动这个目录不应该是一个问题,如果你的意思是'可重定位'。

    要使用此安装而不是系统python,只需确保将/dest/bin放在标准位置之前的PATH上。

    如果这还不够,你可以使用这个python安装设置一个virtualenv ......