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

来源:互联网 发布:wpx软件是什么 编辑:程序博客网 时间:2024/05/18 03:07

一、安装配置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

0 0
原创粉丝点击