macos装多个python
简介
Mac包管理工具brew:
安装方法:命令行输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 回车(这里有提示目录不存在,要创建需要按return键,如果用的windows键盘,就是回车键)
它的用法
brew update 更新brew;
brew install {应用名,如git} 安装软件
brew cask install {应用名,如git} 也是下载安装,与上面的区别,请查看https://www.zhihu.com/question/22624898
更多用法请 brew help
神器好不好,用了才知道,自己去试吧
利用Mac包管理工具brew安装pyenv,pyenv用来管理所有python版本。如果没有安装brew,先安装一下吧。
安装pyevn
$ brew install pyenv
$ pyenv -v
pyenv 1.2.6
查看所有的python版本(pyenv管理的所有版本)
$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)
* 表示当前正在使用的版本,system表示用的是系统python版本
查看可安装python版本
$ pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
...
选择版本进行安装
$ pyenv install 3.5.5
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.5.5.tar.xz...
-> https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tar.xz
Installing Python-3.5.5...
python-build: use readline from homebrew
Installed Python-3.5.5 to /Users/xxx/.pyenv/versions/3.5.5
墙内环境,会卡在这里,可以开代理,或者使用国内镜像。
使用国内镜像:
v=3.5.5|wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
查看所有安装的版本
$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)
3.5.5
可以看到多了一个3.5.5版
切换版本
$ pyenv global 3.5.5 # 全局切换
$ python -V # 验证一下是否切换成功
此处用也可用local,只对当前目录生效
$ pyenv local 3.5.5 # 当前目录及其目录切换
$ python -V # 验证一下是否切换成功
此处有坑!
用pyenv versions查看,明明已经切换成功,但是用python -V却还是系统版本。原因是pyenv没有加到$PATH环境变量里去,解决办法如下:
export PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/shims:$PATH
此时,再次查看python -V,已经成功切换到pyenv指定的版本。
可以把上边两句加到~/.bash_profile里去,永久生效。
有时设置了pyenv local版本后,再设置global会发现没有生效,可以尝试:
pyenv local --unset
解除local设置。
要切换回系统版本,用同样命令:
$ pyenv local system
卸载python版本
$ pyenv uninstall 3.5.5
查看pyenv指令列表
$ pyenv commands
--version
commands
completions
exec
global
help
hooks
init
install
local
prefix
realpath.dylib
rehash
root
shell
shims
uninstall
version
version-file
version-file-read
version-file-write
version-name
version-origin
versions
whence
which
A thousand journey is started by taking the first step.