MacOS_11.3系统安装pyenv的几种方法

2021年5月25日 25点热度 0人点赞 0条评论

文章简介

MacOS_11.3系统安装pyenv的几种方法

1、编译安装(未涉及)

2、脚本安装

3、brew安装

一、通过brew安装

(一)安装brew

(二)安装pyenv

brew install pyenv pyenv-virtualenv

(三)增加环境变量

cat .zshrc
export LANG=zh_CN.UTF-8

#pyenv
eval "$(pyenv init --path)"

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

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

(四)此方法遇到的问题

没有找到brew安装的pyenv根目录,很迷惑

二、使用pyenvinstaller.sh安装

(一)pyenv官网

https://github.com/pyenv/pyenv#installation

(二)通过脚本进行安装

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

(三)添加环境变量

MacOS打开终端命令行时,在窗口的正上方有shell类型显示。

1、bash shell

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

2、zsh shell

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zprofile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >>  ~/.zprofile
echo 'eval "$(pyenv init --path)"' >>  ~/.zprofile
echo 'eval "$(pyenv init -)"' >>  ~/.zprofile
echo 'eval "$(pyenv virtualenv-init -)"' >>  ~/.zprofile

(四)重新打开终端窗口测试环境

linux98@linux98deMac cache % pyenv
pyenv 2.0.0
Usage: pyenv <command> [<args>]

三、在MacOS最新的11系统上,pyenv安装3版本系统的问题

macos11使用pyenv安装3.6.9会有问题,使用下面的方法可以解决
可能会因为网络影响后面的参数,多试几次就可以了(2021年05月25日21:00:32亲测有效)
pyenv install --patch 3.6.9 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch)

四、pyenv的使用

(一)使用pyenv安装多版本python

linux98@linux98deMac cache % pyenv install 3.8.8 -vv 
linux98@linux98deMac cache % pyenv versions
* system (set by /Users/linux98/.pyenv/version)
  3.6.9
  3.8.8
linux98@linux98deMac cache % python2 -V    
Python 2.7.16
linux98@linux98deMac cache % python3 -V    
Python 3.8.2

(二)使用离线方式安装python

在pyenv的home目录中创建一个cache的文件夹,把.xz格式的安装包放进去,再次执行就会优先读取cache中的安装包
linux98@linux98deMac cache % pwd
/Users/linux98/.pyenv/cache
linux98@linux98deMac cache % ls
Python-3.6.9.tar.xz	error.log		openssl-1.1.1i.tar.gz
Python-3.8.8.tar.xz	openssl-1.1.0j.tar.gz	readline-8.0.tar.gz

(三)创建虚拟环境

linux98@linux98deMac ~ % mkdir -p projects/{py369,py388}
linux98@linux98deMac ~ % cd projects/py369
linux98@linux98deMac py369 % pyenv virtualenv 3.6.9 env369
linux98@linux98deMac py369 % pyenv virtualenv 3.8.8 env388

(四)切换虚拟环境

#切换当前目录环境为env369
linux98@linux98deMac py369 % pyenv local env369
linux98@linux98deMac py369 % python -V
Python 3.6.9
(env369) linux98@linux98deMac py369 % cd ..
#退出后就切换回系统环境了
#切换为388的工作目录
linux98@linux98deMac projects % cd ../py388 
#切换当前目录环境为env388
linux98@linux98deMac py388 % pyenv local env388
#查看python版本
(env388) linux98@linux98deMac py388 % python -V  
Python 3.8.8
(env388) linux98@linux98deMac py388 % cd ..
#退出虚拟环境后又切换回系统环境
linux98@linux98deMac projects % python -V
Python 2.7.16

(五)pyenv virtualenv 的几种切换模式

1、global 

Set or show the global Python version(s)

设置或显示全局Python版本,该设置是全局变量,慎用!

2、local

Set or show the local application-specific Python version(s)

设置或显示本地应用程序特定的Python版本,该设置是针对与项目目录进行设置,影响的是项目目录本身和其子文件夹

3、shell

Set or show the shell-specific Python version

设置或显示特定于shell的Python版本,该设置是针对于当前shell窗口进行设置,退出shell后失效。

小李

学无止境,勇攀高峰。