【问题标题】:HOWTO: Install python2.x within virtualenv? [duplicate]如何:在 virtualenv 中安装 python 2? [复制]
【发布时间】:2012-10-16 01:02:36
【问题描述】:

可能重复:
Python - It is possible to install another version of Python to Virtualenv?

在我的(virtualenv 激活的)env 文件夹中,似乎 python2.7 文件夹具有指向我的系统 python 安装的绝对路径的符号链接。

这并不理想。

即使我从本地路径安装,并使用 virtualenv 在文件夹env 中设置和环境,Python 的路径也是绝对的,并且建立了对 OS 环境的依赖关系。我想摆脱这种依赖,让 python 解释器以及所有依赖它的软件完全独立。

假设我希望将 python2.6 作为独立安装包含在环境树中,而没有指向我的系统文件夹的符号链接。

如何实现这一非凡的非联系性壮举?

$ > pwd 
/Users/foo/development/v1/bar/env
(env)
$ > ls -l lib/python2.7/
total 920
lrwxr-xr-x  1 foo  staff     82 Oct 15 16:48 UserDict.py -> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py
...
lrwxr-xr-x  1 foo  staff     85 Oct 15 16:48 _weakrefset.py -> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_weakrefset.py

感谢您的帮助。

编辑:此外,让 virtualenv(包括本地 python 安装)可重定位是最理想的。

【问题讨论】:

  • 从头开始安装 Python 解释器可能根本不在virtualenv 的范围内。自己将 Python 安装到 env 文件夹中,然后告诉 virtualenv 使用该安装,使其可根据需要重新定位。
  • @Insidi0us - 我找不到那个骗子...谢谢。
  • 只需安装另一个 Python,如来自 python.org 的 OS X Python 安装程序,并使用它而不是 Apple 提供的系统 Python 来安装新的 Distribute 和/或 pip 和 virtualenv 实例,如果你真的需要使用它。但是您不太可能真的需要或应该从源代码构建 Python。正确操作有点棘手,尤其是在 OS X 上。另一种选择是从第 3 方包管理器(如 MacPorts)安装所需的一切。
  • @millimoose - 好主意,但是,当我尝试这个时,virtualenv borks with "shutil.Error: /Users/foo/development/env/bin/python and env/bin/python are the same file"
  • @toszter 不要将 Python 和 virtualenv 安装到同一目录中。将其中至少一个(最好是 Python,而不是 virtualenv)放入 env 下的单独子目录中,例如 env/sdk

标签: python virtualenv pip


【解决方案1】:

更新:另请参阅Is it possible to install another version of Python to Virtualenv?

非常感谢@millimoose 等人。

这就是我最终要做的,非常具体。以后遇到问题我会更新的。

  1. 设置环境文件夹。

    $ mkdir env
    $ mkdir pyenv
    $ mkdir dep
    
  2. 获取 Python-2.7.3 和 virtualenv无需任何形式的根操作系统安装。

    $ cd dep
    $ wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
    $ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    
  3. 解压 Python-2.7.3 并将其安装到 pyenv 目录中。 make clean 是可选的,如果您第二次、第三次、第 N 次这样做...

    $ tar -xzvf Python-2.7.3.tgz
    $ cd Python-2.7.3
    $ make clean
    $ ./configure --prefix=/path/to/pyenv
    $ make && make install
    $ cd ../../
    $ ls
    dep    env    pyenv
    
  4. 创建你的虚拟环境

    $ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
    
  5. 修复env/include/中python2.7的符号链接

    $ ls -l env/include/
    $ cd !$
    $ rm python2.7
    $ ln -s ../../pyenv/include/python2.7 python2.7
    $ cd ../../
    
  6. 修复 env 中剩余的 python 符号链接。如上所述,您必须删除符号链接的目录并重新创建它们。此外,这里是强制就地创建符号链接的语法。

    $ ls -l env/lib/python2.7/
    $ cd !$
    $ ln -sf ../../../pyenv/lib/python2.7/UserDict.py UserDict.py
    [...repeat until all symbolic links are relative...]
    $ cd ../../../
    
  7. 测试

    $ python --version
    Python 2.7.1
    $ source env/bin/activate
    (env)
    $ python --version
    Python 2.7.3
    

阿罗哈。

【讨论】:

  • 这是我最近看到的最好的自我回答之一。
【解决方案2】:
  1. 使用 pythonbrew 获取独立的 Python 安装。
  2. 使用该 Python 安装来启动您的虚拟环境。
  3. 制作虚拟环境relocatable

【讨论】:

  • 谢谢,但在这种情况下,python 安装现在依赖于 pythonbrew,我想传输没有 任何 依赖关系的 python 源。
  • 你不需要传输 pythonbrew,你只需要它来设置你的便携式环境。
猜你喜欢
  • 2018-10-02
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2019-04-04
相关资源
最近更新 更多