为什么要配置多版本的Python

最近刚刚开始看python和opencv,发现很多书上的例子用的是python2.7,而比较新的一些库又只有python3版本,而在Linux系统下使用pip对不同版本包进行升级的时候又难免会出现一些错误。所以,兼容python2和python3对练习来说十分重要。

Python多版本如何实现

Pyenv工具

pyenv是可以实现改变全局,局部场景的python版本管理工具。而且,由于该工具对python各版本设置对应目录,通过变更环境变量到对应目录即可实现多版本python的使用。而且,在版本控制时,shell命令十分简洁,只需要管理virtual python environments的对应命令,而不需要使用向诸如chown $(whoami):adminsudo之类的Linux权限命令。

它并没有使用将不同的 PATH植入不同的shell这种高耦合的工作方式,而是简单地在PATH植入不同的shell这种高耦合的工作方式,而是简单地在PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而使后方的系统路径失效。

Pyenv的安装与使用

  • 安装pyenv
    先安装Homebrew,再使用该命令brew install pyenv来安装pyenv,如果openssl没有出现什么问题的话,大概率是可以直接安装成功的。安装完成后,需要将如下语句加入环境配置文件,博主用的是zsh,所以是添加进.zshrc文件中,如果是使用bash的人,应该将对应语句添加进.bashrc。需要注意的是环境变量路径带不带双引号应该以对应的shell脚本为准。(这里zsh并不需要加双引号),完成后使用source生效。当输入pyenv --version命令后出现pyenv版本则说明安装成功。
#不放心的话,可以直接使用vim进行添加
echo 'export PYENV_ROOT=$HOME/.pyenv' >> ~/.zshrc
echo 'export PATH=$PYENV_ROOT/bin:$PATH' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
  • pyenv查看版本及下载命令

    • pyenv versions :查看当前系统使用该工具安装了哪些版本的python,version没有–,不要和查看pyenv本身的版本搞混,如果还未安装版本,终端就会出现* system (set by /Users/$(whoiam)/.pyenv/version)且下方没有任何版本号。
    • pyenv install -l :查看可安装的版本列表,且使用pyenv install <a version in list>命令即可安装。
  • 使用镜像解决下载时出现BUILD FAILED问题
    下载时,pyenv会直接从网站拽取tar.xz的版本压缩包,10M+左右,但由于墙的存在,导致下载十分容易失败。所以这里推荐使用阿里的镜像源选择要下载的版本,并将下载好的tar.xz文件放入.pyenv/cache中,再重新输入pyenv install <the downloaded version>安装即可。

或者直接使用一键式命令export v=3.5.0 | wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/; pyenv install $v
安装完成后,再重新查看python版本即可:

$pyenv versions
* system (set by /Users/c6h12yith/.pyenv/version)
  2.7.3
  3.5.0

参考链接



Bug Python

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!