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

2025-03-05 09:18:00
admin
原创
2
摘要:问题描述:我在安装了 Python 2.4 的虚拟主机中有一个共享帐户,但我的代码与 2.4 不兼容。是否可以将 Python 2.6 直接安装到 Virtualenv?注意:我没有权限在共享服务器中安装它。解决方案 1:以下是 virtualenv 的选项$ virtualenv You must prov...

问题描述:

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

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


解决方案 1:

以下是 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 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 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.
>>> 

解决方案 2:

先决条件:

  1. sudo easy_install virtualenv

  2. sudo pip install virtualenvwrapper

使用 Python2.6 安装 virtualenv:

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

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

  3. 重新加载你的 shell 以获取更新的 PATH。

  4. 从现在起,你应该能够从你的 shell 调用以下两个 Python 二进制文件,python2.5并且python2.6

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

mkvirtualenv --python=python2.6 yournewenv

解决方案 3:

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
cd YOUR_PROJECT_PATH
pyenv local NAME_OF_YOUR_ENV

解决方案 4:

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


安装 conda(你可能需要一个虚拟环境)

pip install conda

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

我在这里添加这个答案是因为不需要手动下载。conda会为您做到这一点。

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

conda create -n py35 python=3.5.2

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


要激活这个环境(我假设是 Linux,否则请检查conda 文档):

source activate py35

现在通过 pip 或 conda 在环境中安装您需要的内容(conda 有更好的二进制包支持)。

conda install <package_name>

解决方案 5:

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

解决方案 6:

此过程会在任何地方安装 Python2.7 ,并消除文件夹(由 virtualenv 管理)内的任何绝对路径引用。即使 virtualenv 也未绝对安装。env

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

如有任何问题请联系我。这只是我正在设计的一个正在进行的大型项目的一部分。现在,对于 drop...

  1. 设置环境文件夹。

$ mkdir env
$ mkdir pyenv
$ mkdir dep
  1. 无需任何形式的 root OS 安装即可获得 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
  1. 提取并安装 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
  1. 创建虚拟环境

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

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

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

你好。

解决方案 7:

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

$ which python3
/usr/local/bin/python3

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

解决方案 8:

尽管问题具体描述了如何安装 2.6,但我想在上面的优秀答案中添加一些要点,以防有人遇到这种情况。为了记录,我的情况是我试图在 ubuntu 10.04 机器上安装 2.7。

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

尝试过后,我认为依赖 pip 的默认安装(使用sudo apt-get install pip)就足够了。不幸的是,这是错误的。结果,我遇到了一系列棘手的问题,最终无法创建虚拟环境。

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

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

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

解决方案 9:

您可以使用 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

...

解决方案 10:

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

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

(作为奖励,您还可以使用 ActiveState 的二进制包管理器)

解决方案 11:

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

#!/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 的虚拟环境,因为否则会失败(找不到 pip)。也许可以直接安装 pip / wheel,但不知何故 easy_install 是我首先想到的。此外,可以通过分解出具体版本来改进脚本。

注意:在脚本中使用 xz。

解决方案 12:

首先,感谢 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 命令的名称。

解决方案 13:

virtualenv --python=".localpython/bin/python2.7" 环境

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1323  
  IPD研发管理体系作为一种先进的研发管理理念和方法,对于打造优质产品体验起着至关重要的作用。它涵盖了从产品规划、研发、上市到生命周期管理的全流程,通过整合资源、优化流程、加强团队协作等方式,确保产品能够精准满足用户需求,提升用户满意度和忠诚度。IPD研发管理体系的核心原则IPD研发管理体系以市场驱动为核心原则。这意味着...
IPD集成产品开发   4  
  IPD(Integrated Product Development)产品开发流程作为一种先进的产品开发管理模式,在众多企业中得到广泛应用。它强调跨部门团队协作、并行工程以及基于市场的产品开发理念,旨在提高产品开发效率、缩短产品上市时间、提升产品质量。而成本控制在产品开发过程中至关重要,关乎企业的利润空间和市场竞争力。...
华为IPD流程   3  
  IPD(Integrated Product Development)产品开发流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。它从多个维度对产品开发过程进行优化和整合,为企业创新提供了强大的支撑。通过实施IPD产品开发流程,企业能够更加高效地将创意转化为具有市场竞争力的产品,从而在激烈的市场竞争中占据优...
华为IPD流程管理   2  
  华为作为全球知名的科技企业,其产品质量在市场上有口皆碑。华为IPD产品开发流程在确保产品质量方面发挥了至关重要的作用。IPD(Integrated Product Development)即集成产品开发,是一套先进的、成熟的产品开发管理思想、模式和方法。它打破了传统产品开发中各部门之间的壁垒,强调跨部门团队协作,从产品...
IPD集成产品开发流程   2  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用