zoukankan      html  css  js  c++  java
  • Linux——Django 开发环境部署(二)python版本控制器pyenv

    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,会单独写出来说明
  • 相关阅读:
    2011/6/24 数据库分析
    项目代码总结
    背景透明 by sofish
    ie6 reflow bug
    ID与CLASS的使用技巧
    CSS浮动属性Float详解 by 帕兰
    javascript闭包 by 李松峰
    详解CSS选择器、优先级与匹配原理
    垂直对齐:verticalalign属性 by ddcatlee
    行高lineheight,以及基线、顶线、中线和底线,还有内容区域、行内框和行框 by 豆豆猫的窝
  • 原文地址:https://www.cnblogs.com/Simon-xm/p/3955510.html
Copyright © 2011-2022 走看看