可以在Virtualenv上安装另一个版本的Python吗?

时间:2011-03-31 20:46:22

标签: python virtualenv

我在安装了Python 2.4的网络托管中有一个共享帐户,但我的代码与2.4不兼容。是否可以直接将Python 2.6安装到Virtualenv?

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

11 个答案:

答案 0 :(得分:248)

以下是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安装到您也可以编写的目录中。

您可以按照here

的说明进行操作

适用于Python 2.7.1
Python source

mkdir ~/src
mkdir ~/.localpython
cd ~/src
wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
tar -zxvf Python-2.7.1.tgz
cd Python-2.7.1

make clean
./configure --prefix=/home/${USER}/.localpython
make
make install

2)安装virtualenv
virtualenv source

cd ~/src
wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.5.2.tar.gz#md5=fbcefbd8520bb64bc24a560c6019a73c
tar -zxvf virtualenv-1.5.2.tar.gz
cd virtualenv-1.5.2/
~/.localpython/bin/python setup.py install

3)使用本地python创建virtualenv
virtualenv docs

mkdir /home/${USER}/virtualenvs
cd /home/${USER}/virtualenvs
~/.localpython/bin/virtualenv py2.7 --python=/home/${USER}/.localpython/bin/python2.7

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.
>>> 

答案 1 :(得分:20)

先决条件:

  1. sudo easy_install virtualenv
  2. sudo pip install virtualenvwrapper
  3. 使用Python2.6安装virtualenv:

    1. 您可以手动下载,构建和安装另一个版本的Python到/usr/local或其他位置。
    2. 如果它是/usr/local以外的其他位置,请将其添加到您的路径中。
    3. 重新加载shell以获取更新的PATH。
    4. 从这一点开始,您应该可以从shell python2.5python2.6
    5. 调用以下2个python二进制文件
    6. 使用python2.6创建virtualenv的新实例:

      mkvirtualenv --python=python2.6 yournewenv

答案 2 :(得分:4)

此过程在env文件夹(由virtualenv管理)中的任何地方安装Python2.7 并删除任何绝对路径引用。甚至virtualenv也没有绝对安装。

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

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

  1. 设置环境文件夹。

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

    $ 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目录中。如果您在第2次,第3次,第N次这样做,make clean是可选的......

    $ 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. 创建你的virtualenv

    $ 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
    
  8. 阿罗哈。

答案 3 :(得分:4)

我正在使用virtualenvwrapper并且不想修改$ PATH,这是如何:

$ which python3
/usr/local/bin/python3

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

答案 4 :(得分:3)

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

答案 5 :(得分:3)

现在有一天,我发现拥有更新版Python的最简单方法是通过conda将其安装到conda环境中。

安装conda(你可能需要一个virtualenv)

pip install conda

在conda环境中安装新的Python版本

我在此处添加此答案,因为无需手动下载。 conda会为你做到这一点。

现在为您想要的Python版本创建一个环境。在这个例子中,我将使用3.5.2,因为它是撰写本文时的最新版本(2016年8月)。

conda create -n py35 python=3.5.2

将为conda创建一个安装包的环境

要激活此环境(我假设linux,否则请检查conda docs):

source activate py35

现在通过environemnt中的pip或conda安装你需要的东西(conda有更好的二进制包支持)。

conda install <package_name>

答案 6 :(得分:2)

您可以使用pyenv。

有很多不同版本的anaconda,jython,pypy等......

https://github.com/yyuu/pyenv

安装就像pyenv install 3.2.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

...

答案 7 :(得分:1)

虽然这个问题具体描述了安装2.6,但我想在有人遇到这个问题时,为上面的优秀答案添加一些重点。为了记录,我的情况是我试图在ubuntu 10.04盒子上安装2.7。

首先,我对所有答案中描述的方法的动机是,从deadsnake's ppa's安装Python已经彻底失败了。因此,构建本地Python是最佳选择。

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

因此,我强烈建议{strong> install pip locallywget https://raw.github.com/pypa/pip/master/contrib/get-pip.py && python get-pip.py --userThis相关问题给了我这个提示。

现在,如果这不起作用,请确保安装了libssl-dev用于Ubuntu或openssl-dev用于CentOS。使用apt-getyum安装它们,然后重新构建Python(如果已安装,则无需删除任何内容,请在顶部执行此操作)。 get-pip抱怨,您可以通过在py shell上运行import ssl来检查。

最后,不要忘记将.local/bin和本地python声明为路径,请与which pipwhich python一起检查。

答案 8 :(得分:0)

不,但您可以在$HOME目录下安装一个独立的Python版本(例如ActivePython)。

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

(作为奖励,您还可以使用ActiveState的binary package manager

答案 9 :(得分:0)

首先,谢谢DTing的精彩回答。它非常完美。

对于那些在共享托管中没有GCC访问权限的人来说,Go for ActivePython而不是像Scott Stafford提到的普通python。这是命令。

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

它会询问你到python目录的路径。输入

../../.localpython

在DTing的答案中将上面的内容替换为第1步,然后继续执行第2步。请注意,ActivePython包URL可能会随新版本而更改。您始终可以从此处获取新网址:http://www.activestate.com/activepython/downloads

根据URL,您需要根据收到的文件更改tar和cd命令的名称。

答案 10 :(得分:0)

pyenv的完整指南

如果未安装pyenv,请使用pyenv-installer安装它:

$ curl https://pyenv.run | bash

要使用任何自定义的python版本,例如3.5.6使用以下内容:

pyenv install 3.5.6
pyenv virtualenv 3.5.6 name_of_your_env
pyenv activate name_of_your_env