用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
作为主流开发语言, 用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.
2.4.
2.4.
2.4.
2.4.
2.4.
2.5
...
接下来, 作为例子我们安装两个版本 (2.7.1 和 3.3.5)
pyenv install 2.7.
pyenv install 3.3.
安装完毕后, 我们可以查看安装的情况
pyenv versions
输出结果如下:
* system (set by /home/tony/.pyenv/version)
2.7.
3.3.
简单来说我们已经在这台机器上安装了三个版本的python
system 代表当前系统的python 版本
2.7.1 和 3.3.5是我们用pyenv安装的
*表示当前的python版本, 可以看到, 我们还在使用的是默认的system 自带的python版本
4. 切换python版本做一下测试
既然已经安装了两个其他版本的python, 我们来做一下测试
pyenv global 2.7.
这条命令就是将当前python 版本切换到2.7.1
再次运行 pyenv versions, 结果如下:
system
* 2.7. (set by /home/tony/.pyenv/version)
3.3.
可以看到当前的python 版本已经切换到2.7.1了, 如果还不放心, 直接运行 ‘python’ 命令进行验证:
tony@ubuntu:~$ python
Python 2.7. (r271:, May , ::)
[GCC 4.8.] 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. env271
这条命令在本机上创建了一个名为env271的python虚拟环境,这个环境的真实目录位于:~/.pyenv/versions/
注意,命令中的 ‘2.7.1’ 必须是一个安装前面步骤已经安装好的python版本, 否则会出错。
然后我们可以继续通过 ‘pyenv versions’ 命令来查看当前的虚拟环境, 结果如下:
* system (set by /home/tony/.pyenv/version)
2.7.
3.3.5
env271
这里我们可以看到, 除了已经安装的python版本, 我们多出了一个env271的python虚拟环境
6. 切换和使用新的python虚拟环境
切换到新的虚拟环境的命令为
pyenv activate env271
接下来我们的python环境就已经切换到2.7.1的虚拟环境了, 运行 ‘python’ 命令认证
(env271)tony@ubuntu:~$ python
Python 2.7. (r271:, May , ::)
[GCC 4.8.] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>
可以看到, python版本已经是2.7.1, 而且是在虚拟环境之中 (env271)
下面基本上你就可以在这个虚拟环境里面为所欲为了 :) 再也不用担心系统路径被搞乱的问题了。
如果要切换回系统环境, 运行这个命令即可
pyenv deactivate
那如果要删除这个虚拟环境呢? 答案简单而且粗暴,只要直接删除它所在的目录就好:
rm -rf ~/.pyenv/versions/env271/
至此大功告成!
本文简单介绍了如何利用pyenv 和virtualenv来单机多版本python虚拟开发环境的方法,
这两个工具还有很多功能, 无法一一详述,具体可以参考他们的官方文档。 本文只起到一个抛砖引玉的作用, 希望有所帮助
版权声明:
本文由 雷子-晓飞爸 所有,发布于http://www.cnblogs.com/npumenglei/ 如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任。
用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境的更多相关文章
- 用pyenv和virtualenv搭建单机多版本python虚拟开发环境
作为主流开发语言, 用python 开发的程序越来越多. 方便的是大多linux系统里面都默认集成了python, 开发可以随时随地开始. 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试 ...
- CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
安装 系统环境:CentOS 6.5 安装依赖 yum -y install gcc gcc-c++ make git patch openssl-devel zlib-devel readline- ...
- 使用Anaconda3配置多版本Python虚拟开发环境
有时候,为了使用比较干净的开发环境,或者为了测试一些版本的扩展库,我们可能需要创建虚拟开发环境,在不同的虚拟开发环境中,只安装需要的扩展库,这样可以最大程度上减少不同扩展库之间的兼容性带来的冲突或其他 ...
- 如何利用pyenv 和virtualenv 在单机上搭建多版本python 虚拟开发环境
pyenv 和virtualenv分别是干什么的? pyenv帮助你在一台机上建立多个版本的python环境, 并提供方便的切换方法. virtualenv则就是将一个目录建立为一个虚拟的python ...
- python虚拟开发环境搭建(virtualenv和virtualenvwrapper)
虚拟开发环境的搭建 (0) 搭建虚拟环境的意义 使不同的开发环境独立 环境升级不影响其他开发环境,也不影响全局 防止包管理的混乱 (1) 指定 虚拟环境的创建目录 环境变量设置 创建 WORKON_H ...
- 使用virtualenv搭建python虚拟开发环境
在使用python做开发时,如果多人需要在同一台机器上工作,或者机器环境经常变化时, 添加或删除一些python包很可能会影响到你自己的开发环境. 因此,通过virtualenv工具可以创建一个完全属 ...
- OSX编译安装Python3及虚拟开发环境Virtualenv
0X00.前言 因为工作原因,最近主要做Python开发,刚好电脑系统重装之后所有的东西都需要重新配置.此文主要记录OSX下通过源码编译安装Python3以及安装虚拟开发环境Virtualenv. 0 ...
- Android开发学习总结(一)——搭建最新版本的Android开发环境
Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...
- Android开发学习总结——搭建最新版本的Android开发环境
原文出自:https://www.cnblogs.com/xdp-gacl/p/4322165.html#undefined 最近由于工作中要负责开发一款Android的App,之前都是做JavaWe ...
随机推荐
- Oracle 等待事件 db file sequential read
db file sequential read-数据文件顺序读取 等待事件: "db file sequential read" Reference Note (文档 ID 345 ...
- docker(二)不管怎么样,先跑起来。运行一个samba,运行一个hello world。
---恢复内容开始--- 继续上一篇文章 访问https://hub.docker.com/r/jackadam/samba/ 这是我写的一个docker镜像. 下面有 无脑测试用: docker r ...
- flask+APScheduler 任务调度,计划任务,定时任务
from flask import Flask from flask_apscheduler import APScheduler # 引入APScheduler from test124 impor ...
- Flask初级(五)flash在模板中使用继承,模板的模板
Project name :Flask_Plan templates:templates static:static 继续上一篇文章. 我们不希望每个页面都写一遍引入js,css,导航条……………… ...
- POJ 2309 BST(树状数组Lowbit)
题意是给你一个满二叉树,给一个数字,求以这个数为根的树中最大值和最小值. 理解树状数组中的lowbit的用法. 说这个之前我先说个叫lowbit的东西,lowbit(k)就是把k的二进制的高位1全部清 ...
- Windows折腾之路 兼谈纯净强迫情节
早期新鲜感 想当年,终于有了第一台属于自己自由处置的电脑,1.2Ghz的CPU,256兆的内存.这在CPU刚刚上1G的年代,不说顶级,也算主流.操作系统呢,在别人的帮助下,装上新鲜的XP,各种的华丽, ...
- 集成学习之Boosting —— XGBoost
集成学习之Boosting -- AdaBoost 集成学习之Boosting -- Gradient Boosting 集成学习之Boosting -- XGBoost Gradient Boost ...
- OO面向对象多线程编程作业总结
第五次作业:多线程电梯调度 设计策略 在本次电梯作业当中,我构造了一个电梯请求队列线程,一个调度器线程,三个电梯线程,一个文件输出线程,还有主线程. 调度器扫描用户的请求队列,将每个队列分配给 ...
- 解决python3读写中文txt时UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0的问题
今天使用python3读写含有中文的txt时突然报了如下错误,系统是MAC OS,iDE是pycharm: UnicodeDecodeError : 'ascii' codec can't decod ...
- 第十六篇 make中的路径搜索
在实际的工程项目中,源文件和头文件都会组织成一定的目录结构,这样也便于项目的管理,前述我们分析的makefile,源文件和头文件大都在当前目录,没有路径搜索的问题,下面我们引入今天的演示程序的目录结 ...