美文网首页
Mac多Python版本共存,多个独立Python开发环境切换。

Mac多Python版本共存,多个独立Python开发环境切换。

作者: 思想黑客 | 来源:发表于2019-01-01 15:43 被阅读20次

    一、安装配置pyenv

    经常遇到这样的情况:

    系统自带的Python是2.x,自己需要Python 3.x,测试尝鲜;

    系统是2.6.x,开发环境是2.7.x

    由于Mac机器系统保护的原因,默认的Python中无法对PIP一些包升级,需要组建新的Python环境。

    此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存。pyenv就是这样一个Python版本管理器。

    1、安装pyenv

    brew install pyenv

    2、根据提示需要添加

    if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

    export PYENV_ROOT=/usr/local/var/pyenv

    这里注意了,如果使用的zsh,务必不要在zshrc配置里面的插件开启pyenv。会导致终端无限循环退出,只需要在你的zshrc结尾处追加上面两行就行了。笔者亲测。

    3、查看当前激活的是那个版本的Python

    pyenv version

    4、查看已经安装了那些版本的Python

    pyenv versions

    5、安装指定版本的Python

    pyenv install 3.5.0

    #安装完成后必须rehash

    pyenv rehash

    6、切换和使用指定的版本Python版本有3种方法:

    λ ~/ pyenv

    pyenv 20151006

    Usage: pyenv <command> [<args>]

    Some useful pyenv commands are:

      commands    列出所有pyenv可用的命令

      local      设置或显示本地应用程序特定的Python版本

      global      设置或显示系统全局的Python版本

      shell      设置或显示shell外壳的Python版本

      install    使用python-build安装指定Python版本

      uninstall  卸载已经安装的Python

      rehash      刷新 pyenv shims (安装之后运行这个)

      version    查看当前使用的版本

      versions    列出已经安装的Python版本,当前激活版本用*号标注

      which      显示的完整路径的可执行文件

      whence      列出包含给定的可执行所有的Python版本

    See `pyenv help <command>' for information on a specific command.

    For full documentation, see: https://github.com/yyuu/pyenv#readme

    特别建议:

    系统全局用系统默认的Python比较好,不建议直接对其操作

    pyenv global system

    用local进行指定版本切换,一般开发环境使用。

    pyenv local 2.7.10

    对当前用户的临时设定Python版本,退出后失效

    pyenv shell 3.5.0

    取消某版本切换

    pyenv local 3.5.0 --unset

    优先级关系:shell——local——global

    二、利用virtualenv和Virtaulenvwrapper管理虚拟Python环境

    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:

    在没有权限的情况下安装新套件

    不同应用可以使用不同的套件版本

    套件升级不影响其他应用

    Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:

    将所有虚拟环境整合在一个目录下

    管理(新增,删除,复制)虚拟环境

    切换虚拟环境

    1、安装和使用方法

    #安装

    pip install virtualenv

    pip install virtualenvwrapper

    #创建虚拟环境

    mkvirtualenv [虚拟环境名称]

    此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。

    如果你使用的bash或者zsh

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

    mkdir $HOME/.virtualenvs

    #在. bash_profile 或者 .zshrc 追加两行

    export WORKON_HOME=$HOME/.virtualenvs

    source /usr/local/bin/virtualenvwrapper.sh

    运行:

    source ~/.bashrc

    source ~/.zshrc

    此时virtualenvwrapper就可以使用了。

    2、创建虚拟环境例如:

    #在当前的环境的Python版本下创建名称为py3dev的虚拟环境。

    mkvirtualenv py3dev

    默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 –no-site-packages建立虚拟环境

    例如:

    mkvirtualenv --no-site-packages [虚拟环境名称]

    mkvirtualenv --no-site-packages py3dev

    3、查看创建的虚拟环境:

    λ ~/ lsvirtualenv

    py2dev

    ======

    py3dev

    ======

    λ ~/ workon

    py2dev

    py3dev

    4、启动某虚拟环境:

    works [虚拟环境名称]

    workon py3dev

    5、删除某个虚拟环境:

    rmvirtualenv [虚拟环境名称]

    rmvirtualenv py3dev

    6、删除某个虚拟环境需要先退出这个环境

    deactivate

    三、融合 pyenv、virtualenv、Virtaulenvwrapper 管理Python版本和虚拟环境

    如何对Python2.7.10和Python3.5.0版本分别创建虚拟环境?

    有这三个工具其实非常简单,主要是确保环境切换成功后在创建虚拟环境。

    #确保切换成功,我建议 source .zshrc 一下在切换

    #安装全新的Python2.7.10版本

    pyenv install 2.7.10

    pyenv rehash

    #切换到刚安装的这个版本

    pyenv local 2.7.10

    #确保切换成功

    source .zshrc

    #验证一下版本,pip发现里面包很少

    pip list

    #验证版本

    python -V

    #务必在这个新的2.7.10中安装

    pip install virtualenv

    pip install virtualenvwrapper

    #务必

    source .zshrc

    #创建2.7.10的开发环境

    mkvirtualenv py2dev

    #创建完某版本的开发环境后务必退出,当前虚拟环境,不然就是虚拟环境中在创建了。

    deactivate

    #退出2.7.10环境

    pyenv local --unset 2.7.10

    source .zshrc

    3.5.0的虚拟环境创建也是一样,因此验证2.7.10和3.5.0的虚拟环境

    (py3dev)☁  ~  deactivate

    ☁  ~  workon py2dev

    (py2dev)☁  ~  python -V

    Python 2.7.10

    (py2dev)☁  ~  deactivate

    ☁  ~  workon py3dev

    (py3dev)☁  ~  python -V

    Python 3.5.0

    (py3dev)☁  ~  deactivate

    ☁  ~

    至今没找到切换Python版本的时候要加载 source .zshrc。经过无数次试验,结果是务必这么干,不知道为什么。

    #愉快无痛升级,一键升级所有PIP包

    pip list --outdated | grep '^[a-z]* (' | cut -d " " -f 1 | xargs pip install -U

    相关文章

      网友评论

          本文标题:Mac多Python版本共存,多个独立Python开发环境切换。

          本文链接:https://www.haomeiwen.com/subject/zsbnlqtx.html