python版本控制器pyenv

之前的 那篇是说明了django环境的site package完全独立出来了,但是使用的python解释器还是系统的,为了继续独立出来,甚至是达到ruby的rvm的自由切换解释器版本,那样不更 好,日后线上升级python版本的时候直接再本地切换版本来运行当前代码测试岂不快哉,其实本篇已经不能算django开发环境了,是python开发 环境部署

在上篇的基础上,继续进行解释器的版本管理器的安装,这里我使用的时pyenv,另外一个管理器是pythonbrew,还有一个pythonz,至于为什么选择pyenv,pythonbrew的GitHub主页上给出了解释如下

英文翻译水平太烂,只能搬原文

Deprecated
This project is no longer under active development.
You are encouraged to try out pyenv instead.

为什么选用pyenv

  • Depend on Python itself. pyenv was made from pure shell scripts. There is no bootstrap problem of Python.

  • Need to be loaded into your shell. Instead, pyenv's shim approach works by adding a directory to your $PATH.

  • Manage virtualenv. Of course, you can create virtualenv yourself, or pyenv-virtualenv to automate the process.

这个项目目前已经在慢慢取代了pythonbrew,GitHub主页 https://github.com/yyuu/pyenv

step1:简介

pyenv lets
you easily switch between multiple versions of Python. It's simple,
unobtrusive, and follows the UNIX tradition of single-purpose tools that
do one thing well.
This project was forked from rbenv and ruby-build, and modified for Python.

step2:功能

  • Let you change the global Python version on a per-user basis.

  • Provide support for per-project Python versions.

  • Allow you to override the Python version with an environment variable.

  • Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.

step3:安装

基于GitHub的安装

This will get you going with the latest version of pyenv and make it easy to fork and contribute any changes back upstream.

1、克隆仓库

$ cd 
$ git clone git://github.com/yyuu/pyenv.git .pyenv

2、指明环境变量

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile 
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

3、开启shims and autocompletion

$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

4、重新启动shell让其生效

$ exec $SHELL

5、这时候就可以安装另外版本的python了

#这里会在$PYENV_ROOT/versions下生成一个目录 
$ pyenv install 2.7.6

6、重构shim,利用pyenv安装完新version的py还是利用安装完新site package都需要执行这个操作

$ pyenv rehash

7、升级pyenv

#升级到最新版 $ cd ~/.pyenv $ git pull 
#升级到指定版本 $ cd ~/.pyenv $ git fetch
$ git tag v0.1.0
$ git checkout v0.1.0

8、卸载指定py版本

通用方法
cd ~/.pyenv/versions
pyenv uninstall 暴力做法
rm -rf $pyversion

如果是mac平台

$ brew update 
$ brew install pyenv //安装
$ brew upgrade pyenv //升级 #安装完成之后
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile //只需要执行一次即可

step4:使用

官方usage页

$ pyenv commands //列出可以使用的命令 
$ pyenv install 3.4.0
$ pyenv version //查看当前的python version
$ pyenv versions //列出pyenv安装的所有组件,包括site package
$ pyenv which python3.4 //列出给定的python version可执行文件位置
$ pyenv whence 2to3 //列出pyenv安装的python version
$ pyenv install --list //列出所有可以安装的包括python version,pypy等
$ pyenv rehash //Run this command after you install a new version of Python, or install a package that provides binaries.
$ pyenv uninstall //卸载 #下面关于pyenv local和pyenv global是两个重要命令 稍后做出单独使用的解释

step5:整合virtualenv

这个pyenv设计了插件来整合了virtualenv甚至还人性化的推出了virtualenvwrapper

1、安装

$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv 
$ exec "$SHELL" #上面会把最近版本安装到~/.pyenv/plugins/pyenv-virtualenv目录 #mac下的安装
$ brew install pyenv-virtualenv

2、使用

$ pyenv virtualenv 2.7.6 venv-2.7.6 //创建一个使用2.7.6版本的解释器的名称为my-virtual-env-2.7.6虚拟环境,存放在~/.pyenv/versions 
$ pyenv virtualenv 3.4.0 venv-django1.6-3.4.0 //同理创建一个3.4解释器的虚拟环境,就是前面我需要的完全独立的测试环境 #这里有个注意的地方这里的解释器必须是通过pyenv安装的解释器,如果不加参数,如下
$ pyenv virtualenv django1.6 //那么这里会使用系统的python version创建虚拟环境,如果需要加参数,就必须是pyenv安装的版本 #激活虚拟环境,这个虚拟环境必须是pyenv创建存在的
$ pyenv activate venv33 #退出虚拟环境
$ pyenv deactivate
\\当然依旧可以使用deactivate,但是这里不推荐的原因是采用deactivate之后仍旧是需要自己取消pyenv local的设定的,假设之前已经设定
 ,关于pyevn的shell,local、global,会单独写出来说明

Linux——Django 开发环境部署(二)python版本控制器pyenv的更多相关文章

  1. Linux——Django 开发环境部署(一)

    Django 开发环境部署(一) 之所以 写这篇文章的原因在于django环境的确轻松搭建,之前Ubuntu上安装了,的确很轻松,但是后期我才知道随便做个环境出来很容易到了后面很麻烦,污 染了系统里的 ...

  2. Delphi 10.2 Linux 程序开发环境部署的基本步骤(网络连接方式要选择桥接或者是Host Only)

    Delphi 10.2 Linux 程序开发环境部署的基本步骤 http://blog.qdac.cc/?p=4477 升級到 Delphi 10.2 Tokyo 笔记http://www.cnblo ...

  3. django开发环境部署之pip、virtualenv、virtualenvwrapper

    step1:安装pip 在python中可以使用easy_install和pip安装python拓展但推荐使用pip Don't use easy_install, unless you like s ...

  4. 虚拟机上的Linux Java开发环境部署记录(VirtualBox+Ubuntu)第一章-基础环境搭建

    创建虚拟机时需注意三点: 在BIOS中开启Intel VT,以支持64位虚拟机系统: 对于Ubuntu 16以上版本,至少分配10G以上初始控件. 增加一块网卡,选择Host-Only网络,用于主机和 ...

  5. 西秦的ACE-Python教程 一、Python本地开发环境部署

    西秦的ACE-Python教程 一.Python本地开发环境部署       西秦 级别: 论坛版主 发帖 1357 云币 2782 加关注 写私信   只看楼主 更多操作楼主  发表于: 10-10 ...

  6. linux 下 ifcfg-eth0 配置/CentOS_minimal安装和开发环境部署

    CentOS_minimal安装和开发环境部署:http://www.th7.cn/system/lin/201305/39002.shtml 网络接口配置文件 [root@localhost ~]# ...

  7. Eclipse for Python开发环境部署

    Eclipse for Python开发环境部署 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大且开源免费 ...

  8. django开发环境搭建(参考流程)

    django开发环境搭建(参考流程) 2013-08-08 01:09:06 分类: LINUX 原文地址:django开发环境搭建(参考流程) 作者:bailiangcn 对于一个初学者,在实际的开 ...

  9. 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等

    http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...

随机推荐

  1. noip 2010 三国游戏

    三国游戏 三国游戏 描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有N 位武将(N为偶数且不小于4),任 ...

  2. Hibernate中用注解配置一对多双向关联和多对一单向关联

    Hibernate中用注解配置一对多双向关联和多对一单向关联 Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射.在Hibernate3.3之前,需单独下载注解 ...

  3. 行为型设计模式之职责链模式(Chain of Responsibility)

    结构 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 适用性 有多个的对象可以处理一个请求,哪个 ...

  4. Java定义bean实体类中的变量时变量名的问题

    首先:TMD,这个问题花了我两个多小时,居然是因为一个字母的大小写导致的,我瞬间就&Y^%^&%&()*%¥%¥¥&^#@%&; 事情是酱紫的: 我定义了一个变 ...

  5. hdu 5084(矩阵操作)

    HeHe Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  6. PHP面向对象知识点总结

    1.$this是什么 当前类实例化的对象 2.访问对象中的成员 对象->成员 3.构造方法 通常用来初始化对象的属性,不用把属性写死,不同的对象就有了不同的属性 4.get.set的用法 通常将 ...

  7. js加强

    js加强 js深度解析 闭包讲解 1.闭包是和gc(垃圾回收机制)相关的 2.闭包实际上是涉及一个对象属性  何时被gc回收的问题 3怎样产生闭包? <script type="tex ...

  8. mysql查询含有指定字段的所有表

    SELECT * FROM information_schema.columns WHERE column_name='userId'; TABLE_SCHEMA字段为db的名称(所属的数据库),字段 ...

  9. 山东多校联合模拟赛 Day1

    矩形计数(rect) Description 给出圆周上的 \(N\) 个点,请你计算出以这些点中的任意四个为四个角,能构成多少个矩 形. 点的坐标是这样描述的,给定一个数组 \(v[1..N]\), ...

  10. oracle数据迁移之Exp和Expdp导出数据的性能对比与优化

    https://wangbinbin0326.github.io/2017/03/31/oracle%E6%95%B0%E6%8D%AE%E8%BF%81%E7%A7%BB%E4%B9%8BExp%E ...