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

问题描述 投票:0回答:2

我查看了

virtualenv
文档,还在 StackOverflow 上发现了 这个问题。但是,既不回答我的问题,又可能会漏掉一些东西,所以我才问。

如何创建一个包含

virtualenv

且不依赖于“主机”的(系统范围)
python
python
环境? IE。我想要一个完全独立的 
virtualenv
 ,它有自己的从源代码编译的 Python 2.7。另一个属性很重要:由于 
virtualenv
chroot
 不同,
python
 内的 
virtualenv
 必须处理不同的绝对路径。

我认为最接近我想要的是一个内部有自己的Python安装的

virtualenv --relocatable

我怎样才能实现这一目标?

基本原理

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

我需要的属性:

  • virtualenv
    环境应该是
    完全独立的(带有所有库等的完整Python)
  • 内部的
  • python
     应该可以工作,无论部署时的绝对路径如何
    
    
      我知道
    • $ENV/bin/python
       似乎可以做到这一点,但它似乎也依赖于系统范围内安装的 
      python
      。我想完全消除这种依赖,推出我自己的 Python。
  • 应该与
  • virtualenv --relocatable
     一样,但也需要 
    包含 完整的 Python 安装。
本问题范围内可以忽略的问题:

    架构/平台。这将仅在单一架构上运行,并且将为每个平台构建
  • virtualenv
     环境(目前仅各种 Linux 发行版)。
python python-2.7 virtualenv
2个回答
6
投票
    获取Python源码
  1. ./configure --prefix=/dest
    
    
  2. make && make install
    
    
恭喜,你现在已经有了一个完全独立于系统Python的Python安装

/dest

。移动此目录应该不是问题,如果这就是您所说的“可重定位”的意思。

要使用此安装而不是系统 python,只需确保将

/dest/bin

 放在标准位置之前的 
PATH
 上即可。

如果这对您来说还不够,您可以使用此 python 安装来设置 virtualenv...


0
投票
与此同时,十多年后,解决方案以

indygreg/python-build-standaloneastral-sh/uv 的形式存在,满足了我当时的大部分需求。

将这个留给那些仍在寻找并对十年前的答案不满意的人。

© www.soinside.com 2019 - 2024. All rights reserved.