00:文章简介
记录MacOS系统上pyenv的环境安装及遇到的各种问题的解决办法。
01:Linux系统安装
1.1:开启xxx获得proxy
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
1.2:使用一键安装脚本
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
1.3:设置pyenv环境变量
# 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
# 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
1.4:安装cpython版本
pyenv install 3.8.8
1.5:设置env python
pyenv virtualenv 3.8.8 py388
1.6:创建工程目录并应用env环境
mkdir mywork && cd mywork
pyenv local py388
# 测试
python -V
1.7:常见问题
- 系统对应的shell版本,bash shell 和 zsh shell设置环境变量的方法不同
- 设置pyenv虚拟python后,python显示找不到,这是因为环境变量少了 pyenv ini --path 这个,重新设置环境变量即可
- python需要其他依赖时(Django环境),需要重新安装依赖,并重新使用 pyenv install 3.8.8来安装python解释器
02:Mac系统安装-brew方法
2.1:安装brew
2.2:安装pyenv
brew install pyenv pyenv-virtualenv
2.3:增加环境变量
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
2.4:此方法遇到的问题
03:Mac系统安装-installer方法
3.1:pyenv官网
https://github.com/pyenv/pyenv#installation
3.2:通过脚本进行安装
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
3.3:添加环境变量
MacOS打开终端命令行时,在窗口的正上方有shell类型显示。
3.3.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
3.3.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
3.4:重新打开终端窗口测试环境
linux98@linux98deMac cache % pyenv
pyenv 2.0.0
Usage: pyenv <command> [<args>]
3.5:在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)
04:pyenv的使用
记录了一些常用的方法
4.1:使用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
4.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
4.3:创建虚拟环境
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
4.4:切换虚拟环境
#切换当前目录环境为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
4.5:pyenv virtualenv 的几种切换模式
# global 设置或显示全局Python版本,该设置是全局变量,慎用!
pyenv global py388
# local 设置或显示本地应用程序特定的Python版本,该设置是针对与项目目录进行设置,影响的是项目目录本身和其子文件夹
pyenv local py388
# shell 设置或显示特定于shell的Python版本,该设置是针对于当前shell窗口进行设置,退出shell后失效。
pyenv shell py388
评论区