django开发环境(二)

17 岁时你不漂亮,可以怪罪于母亲没有遗传好的容貌;但是 30 岁了依然不漂亮,就只能责怪自己,因为在那么漫长的日子里,你没有往生命里注入新的东西

之前的那篇是说明了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

1.1 简介

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.

1.2 功能

  • 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.

二、安装

2.1 基于 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版本
通用方法
~/.pyenv/versions
pyenv uninstall

暴力做法
rm -rf $pyversion

如果是mac平台
$ brew update
$ brew install pyenv //安装
$ brew upgrade pyenv //升级

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

2.2 使用

官方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是两个重要命令
稍后做出单独使用的解释

2.3 补充

2015-07-03

好久不弄了,因为最近准备开始写一个项目的关系,所以重新关注了,但是发觉安装方式也多了,出现了更友好的安装方式,具体地址见参考阅读 pyenv-installer

1、推荐做法

安装
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

升级
pyenv update

卸载
$ rm -fr ~/.pyenv

2、PyPi 方式

$ pip install --egg pyenv

2.4 整合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安装的版本

#激活虚拟环境venv33,这个虚拟环境必须是pyenv创建存在的
$ pyenv activate venv33

#退出虚拟环境
$ pyenv deactivate

参考阅读