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

来源:互联网 发布:金十数据安卓手机版 编辑:程序博客网 时间:2024/05/22 01:59

一、安装配置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 -)"; fiexport 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#安装完成后必须rehashpyenv rehash

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

λ ~/ pyenvpyenv 20151006Usage: 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相互独立,互不影响,它能够:

  1. 在没有权限的情况下安装新套件
  2. 不同应用可以使用不同的套件版本
  3. 套件升级不影响其他应用

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

  1. 将所有虚拟环境整合在一个目录下
  2. 管理(新增,删除,复制)虚拟环境
  3. 切换虚拟环境

1、安装和使用方法

#安装pip install virtualenvpip install virtualenvwrapper#创建虚拟环境mkvirtualenv [虚拟环境名称]

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

如果你使用的bash或者zsh

#创建目录用来存放虚拟环境mkdir $HOME/.virtualenvs#在. bash_profile 或者 .zshrc 追加两行export WORKON_HOME=$HOME/.virtualenvssource /usr/local/bin/virtualenvwrapper.sh运行: source ~/.bashrcsource ~/.zshrc此时virtualenvwrapper就可以使用了。

2、创建虚拟环境例如:

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

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

例如:

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

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

λ ~/ lsvirtualenvpy2dev======py3dev======λ ~/ workonpy2devpy3dev

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.10pyenv rehash#切换到刚安装的这个版本pyenv local 2.7.10#确保切换成功source .zshrc#验证一下版本,pip发现里面包很少pip list#验证版本python -V#务必在这个新的2.7.10中安装pip install virtualenvpip install virtualenvwrapper#务必source .zshrc#创建2.7.10的开发环境mkvirtualenv py2dev#创建完某版本的开发环境后务必退出,当前虚拟环境,不然就是虚拟环境中在创建了。deactivate#退出2.7.10环境pyenv local --unset 2.7.10source .zshrc

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

(py3dev)☁  ~  deactivate  ~  workon py2dev(py2dev)☁  ~  python -VPython 2.7.10(py2dev)☁  ~  deactivate  ~  workon py3dev(py3dev)☁  ~  python -VPython 3.5.0(py3dev)☁  ~  deactivate  ~

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

#愉快无痛升级,一键升级所有PIP包pip list --outdated | grep '^[a-z]* (' | cut -d " " -f 1 | xargs pip install -U

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 7个月宝不吃辅食怎么办 在月子里奶不够怎么办 8月宝宝不吃辅食怎么办 8个月不吃辅食怎么办 宝宝不吃药怎么办一岁 奶水不足宝宝又不吃奶粉怎么办 一岁婴儿突然不吃饭怎么办 一岁宝宝突然不吃饭怎么办 一岁半宝宝突然不爱吃饭怎么办 1岁宝宝突然不爱吃饭怎么办 一岁多宝宝突然不爱吃饭怎么办 一岁半宝宝突然不吃饭怎么办 八个月宝宝不吃奶粉怎么办 小孩铅超标怎么办如何排铅 宝宝突然不吃辅食怎么办 6个月宝宝不喝奶怎么办 宝宝4月不吃母乳怎么办 不吃母乳怎么办 8个月 宝宝不吃奶粉母乳又不够怎么办 宝宝只吃母乳不吃奶粉怎么办 十个月宝宝不爱吃辅食怎么办 奶水不足宝宝不吃奶粉怎么办 两个月宝宝不吃奶瓶怎么办 宝宝拉的有鼻涕怎么办 七个月宝宝拉肚子拉水怎么办 十个月宝宝拉肚子拉水怎么办 一个月宝宝拉肚子拉水怎么办 五个月的宝宝拉肚子还拉水怎么办 4岁宝宝拉肚子怎么办拉水样 刚出生的婴儿呕奶怎么办 8岁儿童腹泻呕吐怎么办 一岁宝宝呕吐腹泻怎么办 5岁儿童腹泻呕吐怎么办 4岁宝宝呕吐腹泻怎么办 7岁儿童腹泻呕吐怎么办 一个月婴儿呕奶怎么办 一个月婴儿呕奶严重怎么办 6岁宝宝大便干燥怎么办 3岁儿童干咳嗽怎么办 3岁宝宝一直咳嗽怎么办 3岁宝宝风寒咳嗽怎么办