一、安装pyevn
~ brew install pyenv
注:也使用Cakebrew安装pyevn
~ pyenv -v
pyenv 1.2.11
~ which pyenv
/usr/local/bin/pyenv
~ pyenv versions
* system (set by /Users/xxx/.pyenv/version)
~ pyenv commands #查看pyenv指令列表
二、查看可安装Python版本
pyenv install --list
Available versions:
2.1.3
......
3.8-dev
activepython-2.7.14
......
anaconda-1.4.0
......
ironpython-dev
......
jython-dev
......
micropython-dev
......
pypy-c-jit-latest
......
pyston-0.5.1
......
stackless-dev
......
三、选择版本进行安装
~ pyenv install 3.7.3
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.3.tar.xz…
-> https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
Installing Python-3.7.3…
python-build: use readline from homebrew
Installed Python-3.7.3 to /Users/xxx/.pyenv/versions/3.7.3
#安装完成后执行rehash,刷新pyenv shims
~ pyenv rehash
如果安装失败,报错:mportError: No module named ‘_scproxy’
四、查看所有安装的版本
~ pyenv versions
* system (set by /Users/xxx/.pyenv/version)
3.7.3
*表示当前的python版本, 可以看到, 我们还在使用的是默认的system 自带的python版本
五、切换版本的3种方法
1、pyenv global x.x.x(全局设置)
设置或显示系统全局的Python版本。系统全局用系统默认的Python比较好,不建议直接对其操作。如果使用此命令,可以看到所有受到pyenv控制的窗口都受到了影响, 所以尽可能不要用root用户来安装pyenv,否则会影响到之前的系统。
~ python -V
Python 2.7.16
~ pyenv version #查看当前激活的是那个版本的Python
system (set by /usr/local/var/pyenv/version)
~ pyenv global 3.7.3 #全局切换
~ pyenv versions #查看已经安装了那些版本的Python
system
* 3.7.3 (set by /Users/xxx/.pyenv/version)
~ python -V #验证一下是否切换成功
Python 2.7.16
用pyenv versions查看,明明已经切换成功,但是用python -V却还是系统版本。原因是pyenv没有加到$PATH环境变量里去,解决办法如下:
export PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/shims:$PATH
可以把上边两句加到~/.bash_profile里去,永久生效。
完了之后使用zsh终端发现配置的环境变量还是无效,每次打开zsh都需要手动source ~/.bash_profile
解决方案:
1、修改zsh的配置文件,让其在每次启动的时候来读取~/.bash_profile里面的配置。vim ~/.zshrc 在文件的最后面加上source ~/.bash_profile
2、把下面5行确保写入~/.zshrc底部:
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
if command -v pyenv 1>/dev/null 2>&1; then
eval “$(pyenv init -)”
fi
在使用 pyenv 之前,重新初始化 shell 环境,执行如下命令:
exec $SHELL
不执行该命令也是完全可以的,你可以关闭当前的终端窗口,重新启动一个就可以了。如果zsh和bash切换着用,那么./zshrc和./bashrc都要改,不然会出现找不到命令的报错。
https://github.com/pyenv/pyenv/blob/master/README.md#basic-github-checkout
2、pyenv local x.x.x(只影响所在文件夹)
设置或显示本地应用程序特定的Python版本。local命令只会对当前的文件夹和其子目录中的版本起作用 ,其他的目录不起作用。用local进行指定版本切换,一般开发环境使用。
~ pyenv local 3.7.3
~ which python
/Users/xxx/.pyenv/shims/python
有时设置了pyenv local版本后,再设置global会发现没有生效,可以尝试:
~ pyenv local --unset
切换版本完成后,输入python即可使用新版本的python;系统自带的脚本会以/usr/bin/python的方式直接调用老版本的python,因而不会对系统脚本产生影响;如果通过homebrew安装python,那么pip会同时安装。
~ pip --version
pip 19.0.3 from /Users/xxx/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pip (python 3.7)
使用pip安装第三方模块时会安装到~/.pyenv/versions/x.x.x下,不会和系统模块发生冲突。
使用pip安装模块后,可能需要执行pyenv rehash更新数据库。
可以使用pip install –upgrade pip更新到新版本。
pyenv 是支持激活多个 Python 版本的,例如:
pyenv local 2.7.10 3.6.5 3.7.0
另外,不管你装多少个 Python,Pycharm 都可以根据 Project 选择 Python Interpreter(解释器),具体步骤:
打开一个项目,选择file-> Default Settings-> Python Interpreter-> show ALL -> +号 -> Existing environment -> 进行下拉框的选择就OK。之后就可以通过添加完的Python Interpreter选择对应版本的Interpreter进行解释执行了。
3、pyenv shell x.x.x(只影响当前的会话)
设置或显示shell外壳的Python版本。对当前用户的临时设定Python版本,退出后失效。
优先级关系:
shell>local>global
六、切换回系统版本
~ pyenv global system
七、卸载某个版本的python
~ pyenv uninstall x.x.x
接下来,您可能还想看这篇文章:
发表回复