是否可以在Virtualenv中安装另一个版本的Python?


146

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

注意:我无权在共享服务器上安装它。

Answers:


253

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

14
精彩的写作!但是有两个评论:1 .实际上,我不必make clean做任何操作都会 返回错误。2. 没有工作而是没有工作。我认为这取决于virtualenv版本。干杯!./configure --prefix=/home/<user>/.localpythonmake cleanvirtualenv name -p=/python/pathvirtualenv name -p /python/path
zzart 2012年

1
我已经退出gcc了,但是在步骤1中可以使用ActiveState Python:docs.activestate.com/activepython/2.7/…–
Scott Stafford

3
这是您需要安装(在debian上)以使其尽可能接近完整安装才能运行的模块的列表:curl gcc build-essential libncursesw5-dev libreadline5-dev libssl-dev libgdm-dev libbz2-dev libc6-dev libsqlite3-dev tk-dev
Claudiu 2013年

1
Nitpick:source是bashism。POSIX等效为.
2014年

4
我发现缺少很多基本模块
user299709 2015年

20

先决条件:

  1. sudo easy_install virtualenv
  2. sudo pip install virtualenvwrapper

使用Python2.6安装virtualenv:

  1. 您可以手动下载,构建另一个Python版本并将其安装到/usr/local另一个位置。

  2. 如果除以外的其他位置/usr/local,请将其添加到PATH中。

  3. 重新加载您的外壳以选择更新的PATH。

  4. 从这一点开始,您应该能够从shell中调用以下2个python二进制文件python2.5python2.6

  5. 使用以下命令创建一个virtualenv的新实例python2.6

    mkvirtualenv --python=python2.6 yournewenv


4
我认为mkvirtualenv命令仅在安装了virtualenvwrapper时有效。
2011年

4

此过程安装Python2.7 任何地方,消除了任何绝对路径引用您的内部env文件夹(由virtualenv中管理)。甚至没有完全安装virtualenv。

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

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

  1. 设置环境文件夹。

    $ mkdir env
    $ mkdir pyenv
    $ mkdir dep
  2. 无需任何形式的root操作系统安装即可获取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如果您是第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
  4. 创建您的virtualenv

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

    $ 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

阿罗哈


1
步骤4似乎需要pip模块。尝试使用最新的Python 2.7.9。
罗曼·苏西

1
试图通过这个非常不完整的答案,但有很多错误。
亚历克斯R

4

我正在使用virtualenvwrapper,并且不想修改$ PATH,方法如下:

$ which python3
/usr/local/bin/python3

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

3

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


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>

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

...


1

尽管该问题专门描述了安装2.6,但我想在上面的出色回答中添加一些重要点,以防有人遇到此问题。作为记录,我的案例是我试图在ubuntu 10.04机器上安装2.7。

首先,我对这里所有答案中所述方法的追求是,从Deadsnake的ppa安装Python 完全失败。因此,构建本地Python是必经之路。

尝试过之后,我认为依靠默认的pip安装(带有sudo apt-get install pip)就足够了。不幸的是,这是错误的。原来,我的所有烦恼都是空缺,最终无法创建virtualenv。

因此,我强烈建议本地安装PIPwget https://raw.github.com/pypa/pip/master/contrib/get-pip.py && python get-pip.py --user这个相关的问题给了我这个提示。

现在,如果这不起作用,请确保已安装libssl-devUbuntu或openssl-devCentOS。使用apt-get或进行安装yum,然后重新构建Python(如果已安装,则无需删除任何内容,请先删除)。get-pip抱怨,您可以通过import ssl在py shell上运行进行检查。

最后,不要忘了声明.local/bin和本地python到路径,并使用which pip和进行检查which python




0

我没有找到合适的答案,所以我来看看,它基于@toszter答案,但不使用系统Python(而且您可能知道,在处理许多问题时,在系统级别安装setuptools和virtualenv并不总是一个好主意Python配置):

#!/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"

打破鸡蛋问题的技巧是首先使virtualenv不使用setuptools,因为否则它会失败(找不到pip)。可能可以直接安装pip / wheel,但是以某种方式easy_install是我想到的第一件事。同样,可以通过考虑具体版本来改进脚本。

注意 在脚本中使用xz。


0

首先,谢谢DTing的出色回答。非常完美。

对于那些在共享主机中没有GCC访问权的人,请使用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可能会随新版本而更改。您随时可以从此处获取新的URL:http : //www.activestate.com/activepython/downloads

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.