作为主流开发语言, 用python 开发的程序越来越多。 方便的是大多linux系统里面都默认集成了python, 开发可以随时随地开始。 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试一些需要安装在默认python路径里的程序, 反复地修改和安装会使系统目录越来越乱,这对于一些有洁癖的程序员来说是不可接受的。 还有时候我们需要在不同的python版本上开发, 而系统一般只会自带一到两种python版本, 切换起来更是麻烦。

本文将介绍如何利用pyenv 和virtualenv 在单机上搭建多版本python 虚拟开发环境。

首先我们搞清楚pyenv 和virtualenv分别是干什么的。

pyenv可以帮助你在一台开发机上建立多个版本的python环境, 并提供方便的切换方法。

virtualenv则提供了一种功能, 就是将一个目录建立为一个虚拟的python环境, 这样的话, 用户可以建立多个虚拟环境, 每个环境里面的python版本可以是不同的, 也可以是相同的, 而且环境之间相互独立。

如果解释得还不是很清楚的话,我们举例说明。

首先我们可以用pyenv 安装多个python 版本, 比如安装了2.5, 2.6, 3.3 三个版本。 用户可以随意切换当前默认的python版本。 但这时候, 每个版本的环境仍是唯一的, 如果我们想在环境中安装一些库的话, 还是会导致这个版本的环境被修改。 这个时候, 如果我们用virtual env去建立虚拟环境, 就可以完全保证系统路径的干净。无论你在虚拟环境中安装了什么程序, 都不会影响已安装版本的系统环境。

说了这么多, 还是动手实践一下来得实在。本文的例子是在一台干净的Ubuntu机器上进行的

1. 首先我们安装pyenv

因为我的Ubuntu是干净的, 所以还需要先安装curl 和 git

sudo apt-get install curl git-core

接下来安装pyenv

curl -L https://raw.github.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

这个命令会把pyenv安装到当前用户的 ~/.pyenv目录下.

同时, 我们还需要把下面代码存到~/.bashrc文件中:

export PYENV_ROOT="${HOME}/.pyenv"

if [ -d "${PYENV_ROOT}" ]; then

export PATH="${PYENV_ROOT}/bin:${PATH}"

eval "$(pyenv init -)"

fi

这段代码的作用主要是指明pyenv的位置, 以便以后可以直接在命令行里面运行pyenv命令。 保存在~/.bashrc 文件中是为了每次用户登陆后自动生效。

所以如果你是第一次运行命令并且没有注销的话, 这一段是不会生效的, 我们还需要运行下面的命令令其生效

source ~/.bashrc

然后就可以直接在命令行里面敲pyenv了。

2. 安装一些必须的包

sudo apt-get build-dep python2.7

后面安装其他版本python的时候会需要这些包

3. 安装某个版本的python

首先我们可以查看一下有哪些版本的python 可以安装

pyenv install --list

结果如下:

2.4

2.4.1

2.4.2

2.4.3

2.4.4

2.4.5

2.4.6

2.5

...

接下来, 作为例子我们安装两个版本 (2.7.1 和 3.3.5)

pyenv install 2.7.1

pyenv install 3.3.5

安装完毕后, 我们可以查看安装的情况

pyenv versions

输出结果如下:

* system (set by /home/tony/.pyenv/version)

2.7.1

3.3.5

简单来说我们已经在这台机器上安装了三个版本的python

system 代表当前系统的python 版本

2.7.1 和 3.3.5是我们用pyenv安装的

*表示当前的python版本, 可以看到, 我们还在使用的是默认的system 自带的python版本

4. 切换python版本做一下测试

既然已经安装了两个其他版本的python, 我们来做一下测试

pyenv global 2.7.1

这条命令就是将当前python 版本切换到2.7.1

再次运行 pyenv versions, 结果如下:

system

* 2.7.1 (set by /home/tony/.pyenv/version)

3.3.5

可以看到当前的python 版本已经切换到2.7.1了, 如果还不放心, 直接运行 ‘python’ 命令进行验证:

tony@ubuntu:~$ python

Python 2.7.1 (r271:86832, May 9 2014, 01:07:17)

[GCC 4.8.2] on linux3

Type "help", "copyright", "credits" or "license" for more information.

>>>

这里可以清楚看到, 当前版本确实是2.7.1

同理, 我们可以继续用python global在各个版本之间进行切换, 如果要切换回系统版本, 请用:

pyenv global system

如果要卸载某个版本的python, 可以这样:

pyenv uninstall x.x.x

5. 利用virtualenv 创建虚拟python环境

现在我们已经安装了多个python版本,但是这还不够, 某些有洁癖的程序员是一定要系统环境足够干净的,这时候我们可以使用virtualenv来创建虚拟python环境

virtualenv本是一个独立的工具,官网在这里:https://pypi.python.org/pypi/virtualenv

幸运的是,如果你是安装我们前面的方式安装pyenv的,那它已经帮我们以plugin的形式安装好了virtualenv, 我们只要使用就好了

首先我们创建一个2.7.1的虚拟环境

pyenv virtualenv 2.7.1 env271

这条命令在本机上创建了一个名为env271的python虚拟环境,这个环境的真实目录位于:~/.pyenv/versions/

注意,命令中的 ‘2.7.1’ 必须是一个安装前面步骤已经安装好的python版本, 否则会出错。

然后我们可以继续通过 ‘pyenv versions’ 命令来查看当前的虚拟环境, 结果如下:

* system (set by /home/tony/.pyenv/version)

2.7.1

3.3.5

env271

这里我们可以看到, 除了已经安装的python版本, 我们多出了一个env271的python虚拟环境

6. 切换和使用新的python虚拟环境

切换到新的虚拟环境的命令为

pyenv activate env271

接下来我们的python环境就已经切换到2.7.1的虚拟环境了, 运行 ‘python’ 命令认证

(env271)tony@ubuntu:~$ python

Python 2.7.1 (r271:86832, May 9 2014, 01:07:17)

[GCC 4.8.2] on linux3

Type "help", "copyright", "credits" or "license" for more information.

>>>

可以看到, python版本已经是2.7.1, 而且是在虚拟环境之中 (env271)

下面基本上你就可以在这个虚拟环境里面为所欲为了 :) 再也不用担心系统路径被搞乱的问题了。

如果要切换回系统环境, 运行这个命令即可

pyenv deactivate

那如果要删除这个虚拟环境呢? 答案简单而且粗暴,只要直接删除它所在的目录就好:

rm -rf ~/.pyenv/versions/env271/

安装virtualenv和virtualenvwrapper

$sudo apt-get install python-virtualenv

$sudo easy_install virtualenvwrapper

上述工具装好后找不到mkvirtualenv命令,需要执行以下环境变量设置

1.创建目录用来存放虚拟环境

mkdir $HOME/.virtualenvs

2.在~/.bashrc中添加行:

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

3.运行:

source ~/.bashrc

3.创建python虚拟环境

mkvirtualenv [虚拟环境名称]

4.切换虚拟环境

workon [虚拟环境名称]

5.退出虚拟环境

deactivate

6.删除虚拟环境

rmvirtualenv [虚拟环境名称]

注:创建的环境是独立的,互不干扰,无需sudo权限即可使用 pip 来进行包的管理,如果在虚拟环境中使用sudo安装的包在主环境中

使用-p参数指定虚拟环境中python的版本

$ mkvirtualenv -p python python2_tornado

python如何退出虚拟环境_python 虚拟环境相关推荐

  1. python venv文件夹_Python虚拟环境Venv

    当你的项目比较复杂,对模块版本要求不一时,不需要安装多个 Python,只需要配置虚拟环境即可.提起虚拟环境,很多人都会想到 Virtualenv,实际上从 Python3.3 版本开始内置了 Ven ...

  2. python虚拟环境管理工具_Python虚拟环境和包管理工具Pipenv的使用详解--看完这一篇就够了...

    前言 Python虚拟环境是一个虚拟化,从电脑独立开辟出来的环境.在这个虚拟环境中,我们可以pip安装各个项目不同的依赖包,从全局中隔离出来,利于管理. 传统的Python虚拟环境有virtualen ...

  3. python删除venv虚拟环境_python虚拟环境--virtualenv

    简介 virtualenv 是一个创建隔绝的Python环境的工具.virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包. 安装 pip install vi ...

  4. python超时退出进程_Python如何实现让一个函数超时退出?

    你的意思是函数一直在做cpu密集型的计算任务吗?可以把任务分割,执行完一个小任务后检查是否超时,超时return,否则继续. 补充: 这样吧 # coding=utf-8 import datetim ...

  5. python虚拟环境的目录是啥_Python 虚拟环境

    前言 有的时候因为各种原因,在操作系统下,我们会安装很多版本的Python解释器.同样,我们也有可能因为各种原因,需要不同版本的模块,比如Django1.8,Django1.11.再加上pip工具管理 ...

  6. python搭建环境是什么_python虚拟环境是什么?python虚拟环境的介绍

    本篇文章给大家带来的内容是关于python虚拟环境是什么?python虚拟环境的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 什么是Python的虚拟环境 记得在学校写代码的时 ...

  7. python 创建目录_Python虚拟环境的搭建与使用

    前言 在开发中很多时候不同的项目会需要用的不同版本的包,甚至是不同版本的Python,而使用虚拟环境就可以轻松解决问题.虚拟环境通过创建一个全新的Python开发环境,从而实现不同项目间的隔离. 虚拟 ...

  8. python 虚拟环境原理_Python 虚拟环境

    建议在开发环境和生产环境下都使用虚拟环境来管理项目的依赖. - Flask 背景 Python 应用通常会使用一些第三方的软件包和模块.不同的应用可能会依赖不同版本的同一个软件包,或者依赖不同的 Py ...

  9. 支持python开发的环境有哪些特点_Python虚拟环境详细教程,一篇带你入坑

    Python 之所以强大,除了语言本身的特性外,更重要的是拥有无所不及的第三方库.强大的软件库,让开发者将精力集中在业务上,而避免重复造轮子的浪费.但众多的软件库,形成了复杂的依赖关系.今天我们就来了 ...

  10. python怎么进入虚拟环境_Python 中如何使用 virtualenv 管理虚拟环境

    1. 什么是虚拟环境? 虚拟环境的意义,就如同 虚拟机 一样,它可以实现不同环境中Python依赖包相互独立,互不干扰. 举个例子吧. 假设我们的电脑里有两个项目,他们都用到同一个第三方包,本来一切都 ...

最新文章

  1. UI设计培训:UI构思创意技巧和方法
  2. keras简单介绍与使用
  3. 使用字符流 创建文件 写入文件 复制文件
  4. Luogu P1073 最优贸易【最短路/建反图】 By cellur925
  5. 关于c语言中负数位移位操作的漫谈
  6. 一些需要解决的问题(Win32)
  7. Heap 3214 LIS题解
  8. node中的缓存机制
  9. eda可视化_5用于探索性数据分析(EDA)的高级可视化
  10. mysql学习笔记(1-安装简介)
  11. struts json序列化遇上replaceAll就出问题
  12. maven构建SSM工程[应用]2
  13. VMware vSAN 的内部版本号和版本 (2150753)
  14. 推荐一款神器,不用写函数的“Excel”,统计数据比透视表还牛!
  15. 数组及引用类型内存分配
  16. 第一章 建立数学模型
  17. java出现com.lowagie.text。DocumentException:字体“C: \ Windows \ \ simsun字体。带有'Identity-H'的ttc'不被识别的错误
  18. 如何把苹果手机iPhone/iPad无线投屏到MAC电脑计算机上面?
  19. PBFT(一):过程
  20. 电脑没声音怎么调出来?让电脑重新“开口说话”,黑客仅用了2招

热门文章

  1. 打开计算机硬盘有声音,电脑硬盘有响声总吱吱响的解决方法
  2. html5饼图的制作方法,excel2010复合饼图制作方法
  3. nmos导通流向_讨论一下:用NMOS还是PMOS关断好? - 模拟与混合信号 - 电子工程世界-论坛 - 手机版...
  4. NUCLEAR-ID细胞周期分析试剂盒特点与应用
  5. ps怎么更改背景图层大小_如何利用Photoshop软件修改图片尺寸的大小
  6. 正高、正常高、大地高
  7. 如何制定项目里程碑?
  8. 婚纱摄影、影楼、照相馆流量制造工具预约系统之种草社区
  9. 模型评估方法【附python代码】(信息准则:赤池信息量准则AIC、贝叶斯信息准则BIC)
  10. 三顿半、永璞、时萃,谁能成为下一个咖啡品类之王?