是否有可能安装另一个版本的Python Virtualenv?
我有一个安装了Python 2.4的networking托pipe共享帐户,但是我的代码与2.4不兼容。 有没有可能将Python 2.6直接安装到Virtualenv?
注意:我没有权限将其安装在共享服务器上。
这里是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, eg, --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创build一个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. >>>
先决条件:
-
sudo easy_install virtualenv
-
sudo pip install virtualenvwrapper
用Python2.6安装virtualenv:
- 您可以手动下载,构build并安装另一个版本的Python到
/usr/local
或其他位置。 - 如果是
/usr/local
以外的其他位置,请将其添加到PATH中。 - 重新加载你的shell来获取更新的PATH。
- 从这一点上,你应该能够从你的shell
python2.5
和python2.6
调用下面的2个python二进制文件 -
用
python2.6
创build一个virtualenv的新实例:mkvirtualenv --python=python2.6 yournewenv
这个过程在任何地方安装Python2.7 ,并消除你的env
文件夹内的所有绝对path引用 (由virtualenvpipe理) 。 即使virtualenv没有绝对安装。
因此,从理论上讲,您可以将顶级目录放到tar包中,然后在没有安装Python (或任何依赖)的机器上运行tarball中configuration的任何东西。
有任何问题与我联系。 这只是我正在进行的一个大型项目的一部分。 现在,下降…
-
设置环境文件夹。
$ mkdir env $ mkdir pyenv $ mkdir dep
-
获取Python-2.7.3和virtualenv, 没有任何forms的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
-
将Python-2.7.3解压缩并安装到
pyenv
目录中。 如果你正在做这个第二,第三,第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
-
创build你的virtualenv
$ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
-
修复符号链接到python2.7
env/include/
$ ls -l env/include/ $ cd !$ $ rm python2.7 $ ln -s ../../pyenv/include/python2.7 python2.7 $ cd ../../
-
修复env中剩余的python符号链接。 您将不得不删除符号链接的目录并重新创build它们,如上所述。 另外,下面是强制就地创build符号链接的语法。
$ 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 ../../../
-
testing
$ python --version Python 2.7.1 $ source env/bin/activate (env) $ python --version Python 2.7.3
阿罗哈。
通常的做法是下载源代码并在本地构build和安装(但不直接在virtualenv中),然后使用本地Python安装创build一个新的virtualenv。 在某些系统上,可以下载并安装一个预编译的python,而不是从源代码编译。
我正在使用virtualenvwrapper,不想修改$ PATH,这里是如何:
$ which python3 /usr/local/bin/python3 $ mkvirtualenv --python=/usr/local/bin/python3 env_name
你可以使用pyenv。
有很多不同的版本anaconda,jython,pypy等等…
安装和pyenv install 3.2.6
一样简单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
…
虽然这个问题具体描述了安装2.6,我想添加一些重要的问题,以防万一有人遇到这个问题。 为了logging,我的情况是,我试图在Ubuntu 10.04盒上安装2.7。
首先,我对这里所有答案中描述的方法的动机是,从deadsnake的ppa安装Python是一个彻底的失败。 所以build立一个本地的Python是最好的select。
经过这样的尝试,我认为依靠pip的默认安装(使用sudo apt-get install pip
)就足够了。 这不幸的是错误的。 事实certificate,我得到的所有短小的讨厌的问题,最终无法创造一个virtualenv。
因此,我强烈build议使用wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py && python get-pip.py --user
来本地安装pip 。 这个相关的问题给了我这个提示。
现在,如果这不起作用,请确保安装了用于Ubuntu的libssl-dev
或用于CentOS的openssl-dev
。 用apt-get
或yum
安装它们,然后重新构buildPython(如果已经安装,则不需要删除任何内容)。 get-pip
抱怨,你可以通过在py shell上运行import ssl
来检查。
最后,不要忘记声明.local/bin
和本地python到path,检查which pip
和which python
。
现在,我发现最简单的方法是使用更高版本的Python,通过conda将其安装到conda环境中。
安装conda(你可能需要一个virtualenv)
pip install conda
在conda environent中安装新的Python版本
我在这里添加这个答案,因为不需要手动下载。 conda
会为你做到这一点。
现在为你想要的Python版本创build一个环境。 在这个例子中,我将使用3.5.2
,因为它是在这个写作时间的最新版本(2016年8月)。
conda create -n py35 python=3.5.2
将为conda创build一个环境来安装软件包
要激活这个环境(我假设linux否则检查conda文档 ):
source activate py35
现在通过pip或conda在环境中安装你需要的东西(conda有更好的二进制包支持)。
conda install <package_name>
不,但是你可以在$HOME
目录下安装一个独立的Python版本(比如ActivePython )。
这种方法是最快的 ,不需要你自己编译Python。
(作为奖励,你也可以使用ActiveState的二进制包pipe理器 )
我还没有find合适的答案,所以这里是我的看法,它build立在@toszter答案,但不使用系统Python (你可能知道,在处理多个系统时,在系统级安装setuptools和virtualenv并不总是好主意Pythonconfiguration):
#!/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"
在这里打破鸡蛋问题的诀窍就是先制作没有setuptools的virtualenv,否则会失败(找不到pip)。 可以直接安装pip / wheel,但easy_install是我想起来的第一个东西。 另外,脚本可以通过分解具体版本来改进。
NB。 在脚本中使用xz。
首先,谢谢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
它会问你的path到python目录。 input
../../.localpython
只需在DTing的答案中将上面的步骤replace为步骤1,然后继续步骤2即可。 请注意,ActivePython包URL可能随新版本而改变。 您可以随时从这里获取新的url: http : //www.activestate.com/activepython/downloads
基于URL,您需要根据收到的文件更改tar和cd命令的名称。