是否可以将另一个版本的Python安装到Virtualenv?

是否可以将另一个版本的Python安装到Virtualenv?,python,virtualenv,Python,Virtualenv,我在安装了Python2.4的web主机中有一个共享帐户,但我的代码与2.4不兼容。是否可以将Python 2.6直接安装到Virtualenv 注意:我没有在共享服务器中安装它的权限。通常的方法是下载源代码并在本地构建和安装(但不是直接在virtualenv中),然后使用该本地Python安装创建一个新的virtualenv。在某些系统上,可以下载并安装预构建的python,而不是从源代码构建 先决条件: sudo easy\u安装virtualenv sudo pip安装virtualenv

我在安装了Python2.4的web主机中有一个共享帐户,但我的代码与2.4不兼容。是否可以将Python 2.6直接安装到Virtualenv


注意:我没有在共享服务器中安装它的权限。

通常的方法是下载源代码并在本地构建和安装(但不是直接在virtualenv中),然后使用该本地Python安装创建一个新的virtualenv。在某些系统上,可以下载并安装预构建的python,而不是从源代码构建

先决条件:

  • sudo easy\u安装virtualenv
  • sudo pip安装virtualenvwrapper
  • 使用Python2.6安装virtualenv:

  • 您可以手动下载、构建和安装另一个版本的Python到
    /usr/local
    或其他位置

  • 如果是
    /usr/local
    以外的其他位置,请将其添加到路径中

  • 重新加载shell以拾取更新的路径

  • 从现在开始,您应该能够从shell调用以下2个python二进制文件
    python2.5
    python2.6

    pyenv install --list
    Available versions:
      2.1.3
      2.2.3
      2.3.7
      2.4
      2.4.1
      2.4.2
      2.4.3
      2.4.4
      2.4.5
      2.4.6
      2.5
      2.5.1
      2.5.2
      2.5.3
      2.5.4
      2.5.5
      2.5.6
      2.6.6
    
  • 使用
    python2.6
    创建virtualenv的新实例:

    mkvirtualenv--python2.6 yournewenv


  • 不可以,但是您可以在
    $HOME
    目录下安装一个独立的Python构建(例如)

    这种方法是最快的,不需要您自己编译Python


    (作为奖励,您还可以使用ActiveState)

    以下是virtualenv的选项

    $ virtualenv
    You must provide a DEST_DIR
    Usage: virtualenv [OPTIONS] DEST_DIR
    
    Options:
      --version             show program's version number and exit.
      -h, --help            show this help message and exit.
      -v, --verbose         Increase verbosity.
      -q, --quiet           Decrease verbosity.
      -p PYTHON_EXE, --python=PYTHON_EXE
                            The Python interpreter to use, e.g.,
                            --python=python2.5 will use the python2.5 interpreter
                            to create the new environment.  The default is the
                            interpreter that virtualenv was installed with
                            (/usr/bin/python)
      --clear               Clear out the non-root install and start from scratch
      --no-site-packages    Don't give access to the global site-packages dir to
                            the virtual environment
      --unzip-setuptools    Unzip Setuptools or Distribute when installing it
      --relocatable         Make an EXISTING virtualenv environment relocatable.
                            This fixes up scripts and makes all .pth files
                            relative
      --distribute          Use Distribute instead of Setuptools. Set environ
                            variable VIRTUALENV_USE_DISTRIBUTE to make it the
                            default
      --prompt==PROMPT      Provides an alternative prompt prefix for this
                            environment
    
    1)您要做的是将python安装到您也可以编写的目录中。

    你可以按照说明去做

    用于Python 2.7.1

    2)安装virtualenv

    3)使用本地python创建VirtualNV

    4)激活环境

    cd ~/virtualenvs/py2.7/bin
    source ./activate
    
    5)检查

    (py2.7)$ python
    Python 2.7.1 (r271:86832, Mar 31 2011, 15:31:37) 
    [GCC 4.4.5] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    
    (py2.7)$ deactivate
    $ python
    Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
    [GCC 4.4.5] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    

    此过程在任何位置安装Python2.7,并消除
    env
    文件夹(由virtualenv管理)中的任何绝对路径引用。甚至virtualenv也不是绝对安装的

    因此,从理论上讲,您可以将顶级目录放入tarball中,在未安装Python(或任何依赖项)的机器上分发和运行tarball中配置的任何内容

    如有任何问题,请与我联系。这只是我正在进行的一个更大项目的一部分。现在,对于下降

  • 设置环境文件夹

    $ mkdir env
    $ mkdir pyenv
    $ mkdir dep
    
  • 获取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
    
  • 将Python-2.7.3解压缩并安装到
    pyenv
    dir中<如果您第2次、第3次、第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
    
  • 创造你的虚拟世界

    $ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
    
  • env/include/

    $ ls -l env/include/
    $ cd !$
    $ rm python2.7
    $ ln -s ../../pyenv/include/python2.7 python2.7
    $ cd ../../
    
  • 修复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 ../../../
    
  • 试验

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

  • 您好。

    尽管这个问题专门描述了安装2.6,但我想在上面的优秀答案中添加一些要点,以防有人遇到这个问题。作为记录,我的案例是我试图在ubuntu 10.04上安装2.7

    首先,我对这里所有答案中描述的方法的动机是,从安装Python完全失败了。因此,构建本地Python是一条可行的道路

    尝试过之后,我认为依赖pip的默认安装(使用
    sudo apt get install pip
    )就足够了。不幸的是,这是错误的。事实证明,我得到了所有令人讨厌的问题,最终无法创建一个虚拟电视短片

    因此,我强烈建议使用
    wgethttps://raw.github.com/pypa/pip/master/contrib/get-pip.py &&python get-pip.py——用户
    。相关问题给了我这个提示

    现在,如果这不起作用,请确保安装了Ubuntu或CentOS。使用
    apt get
    yum
    安装它们,然后重新构建Python(如果已经安装,则无需删除任何内容,请在顶部执行)
    getpip
    对此表示不满,您可以通过在py shell上运行
    importssl
    进行检查


    最后,不要忘记声明
    .local/bin
    和local python to path,检查
    哪个pip
    哪个python
    我正在使用virtualenvwrapper,不想修改$path,以下是方法:

    $ which python3
    /usr/local/bin/python3
    
    $ mkvirtualenv --python=/usr/local/bin/python3 env_name
    

    我还没有找到合适的答案,所以我的观点是,它建立在@toszter-answer的基础上,但不使用系统Python(您可能知道,在处理许多Python配置时,在系统级安装setuptools和virtualenv并不总是一个好主意):

    解决这一问题的诀窍是首先在不使用setuptools的情况下生成virtualenv,否则它将失败(无法找到pip)。直接安装pip/车轮可能是可能的,但我首先想到的是如何简单地安装。此外,可以通过分解具体版本来改进脚本


    注意。在脚本中使用xz。

    现在已经有一天了,我发现获得更更新版本的Python的最简单方法是通过conda将其安装到conda环境中


    安装conda(为此,您可能需要一个virtualenv)


    在conda环境中安装新的Python版本 我在这里添加这个答案是因为不需要手动下载<代码>康达将为您完成此操作

    现在为您所使用的Python版本创建一个环境
    $ python --version
    Python 2.7.1
    $ source env/bin/activate
    (env)
    $ python --version
    Python 2.7.3
    
    $ which python3
    /usr/local/bin/python3
    
    $ mkvirtualenv --python=/usr/local/bin/python3 env_name
    
    #!/bin/sh
    
    mkdir python_ve
    cd python_ve
    
    MYROOT=`pwd`
    mkdir env pyenv dep
    
    cd ${MYROOT}/dep
    wget https://pypi.python.org/packages/source/s/setuptools/setuptools-15.2.tar.gz#md5=a9028a9794fc7ae02320d32e2d7e12ee
    wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz
    xz -d Python-2.7.9.tar.xz
    
    cd ${MYROOT}/pyenv
    tar xf ../dep/Python-2.7.9.tar
    cd Python-2.7.9
    ./configure --prefix=${MYROOT}/pyenv && make -j 4 && make install
    
    cd ${MYROOT}/pyenv
    
    tar xzf ../dep/setuptools-15.2.tar.gz
    
    cd ${MYROOT}
    
    pyenv/bin/python dep/virtualenv.py --no-setuptools --python=${MYROOT}/pyenv/bin/python --verbose env
    env/bin/python pyenv/setuptools-15.2/setup.py install
    env/bin/easy_install pip
    
    echo "virtualenv in ${MYROOT}/env"
    
    pip install conda
    
    conda create -n py35 python=3.5.2
    
    source activate py35
    
    conda install <package_name>
    
    pyenv install --list
    Available versions:
      2.1.3
      2.2.3
      2.3.7
      2.4
      2.4.1
      2.4.2
      2.4.3
      2.4.4
      2.4.5
      2.4.6
      2.5
      2.5.1
      2.5.2
      2.5.3
      2.5.4
      2.5.5
      2.5.6
      2.6.6
    
    wget http://downloads.activestate.com/ActivePython/releases/2.7.13.2713/ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785.tar.gz
    
    tar -zxvf ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785.tar.gz
    
    cd ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785
    
    ./install.sh
    
    ../../.localpython
    
    $ curl https://pyenv.run | bash
    
    pyenv install 3.5.6
    pyenv virtualenv 3.5.6 NAME_OF_YOUR_ENV
    cd YOUR_PROJECT_PATH
    pyenv local NAME_OF_YOUR_ENV