macOS12 pyenv 和 pyenv-virtualenv 安装和使用
macOS 12.3开始系统自带的Python.2.7被移除
macOS Monterey 12.3 Release Notes | Apple Developer Documentation
所以需要自行下载Python版本,而多个版本的Pyhton在Mac中可能会有冲突,最好是用版本管理来进行管理
pyenv可以通过命令方便的管理Python的环境,python-virtualenv是基于pyenv的python 虚拟环境管理
准备工作
安装之前推荐先设置代理,查看你的代理对应的端口,不设置代理brew和pyenv的下载都会特别的慢,没有代理自行搜索如何用国内镜像
输入命令,终端(shell)使用代理,这个命令是一次行的,终端关闭后就失效了
exporthttps_proxy=http://127.0.0.1:1087http_proxy=http://127.0.0.1:1087all_proxy=socks5://127.0.0.1:1087
Homebrew的安装
/bin/bash -c"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
pyenv的安装和使用
Homebrew安装 pyenv
brew update
brewinstall pyenv
配置shell环境,这里有一个坑点,第一条是pyenv去年新增的命令,网上许多文章没有,导致pyenv的版本控制无法正常使用
echo'eval "$(pyenv init --path)"'>> ~/.zprofileecho'eval "$(pyenv init -)"'>> ~/.zshrc
重新打开终端,或者执行以下命令加载pyenv的配置
source ~/.zprofilesource ~/.zshrc
查看配置成功没,通过查看环境变量$PATH
中是否有/Users/[用户名]/.pyenv/shims
选择你要安装的版本,以下安装Python 3.8.13和Python 2.7.18
pyenvinstall3.8.13
pyenvinstall2.7.18
查看已安装的Python版本
pyenv versions
pyenv global
设置全局版本
pyenv global3.8.132.7.18
根据设置版本的前后来决定python
解析的是哪个,前面的版本为3.8.13
所以优先解析它
➜ ~ python --version
Python3.8.13
➜ ~ python2 --version
Python2.7.18
➜ ~ python3 --version
Python3.8.13
➜ ~which python3
/Users/unitary/.pyenv/shims/python3
➜ ~which python
/Users/unitary/.pyenv/shims/python
pip 类似
➜ ~ pip --version
pip22.0.4 from /Users/unitary/.pyenv/versions/3.8.13/lib/python3.8/site-packages/pip(python3.8)
➜ ~ pip2 --version
pip19.2.3 from /Users/unitary/.pyenv/versions/2.7.18/lib/python2.7/site-packages/pip(python2.7)
pyenv shell
设置shell下的版本,意思在当前的shell下使用的版本,关闭终端后就失效
pyenv shell2.7.18
pyenv local
设置本地目录下的版本,这个目录下所有目录都共用这个版本
➜ ~ pyenvlocal2.7.18
➜ ~ python --version
Python2.7.18
➜ ~cd Applications
➜ Applications python --version
Python2.7.18
本地目录的版本设置信息存放在./python-version
中,pyenv local --unset
进行取消
➜ ~cat .python-version2.7.18
➜ ~ pyenvlocal --unset
➜ ~cat .python-version
cat: .python-version: No suchfile or directory
pyenv-virtualenv的安装和使用
Homebrew安装 pyenv-virtualenv
brewinstall pyenv-virtualenv
shell 环境配置
echo'eval "$(pyenv virtualenv-init -)"'>> ~/.zshrcsource ~/.zshrc
创建一个虚拟环境venv38
,环境为当前的Python版本3.8.13
pyenv virtualenv venv38
创建指定版本的虚拟环境venv27
,指定版本为2.7.18
virtualenv2.7.18 venv27
查看已创建的虚拟环境
➜ ~ pyenv virtualenvs2.7.18/envs/venv27(created from /Users/unitary/.pyenv/versions/2.7.18)3.8.13/envs/venv38(created from /Users/unitary/.pyenv/versions/3.8.13)
venv27(created from /Users/unitary/.pyenv/versions/2.7.18)
venv38(created from /Users/unitary/.pyenv/versions/3.8.13)
切换至虚拟环境,在虚拟环境中下载的模块是独立的,只能在虚拟环境中使用,和其他环境隔离开的
➜ ~ pyenv shell venv27(venv27) ➜ ~ python --version
Python2.7.18
在有些情况下需要用activate
的方式启用虚拟环境,我们这次激活venv38
虚拟环境,最后用pyenv deativate
退出环境
➜ ~ pyenv activate venv38(venv38) ➜ ~ python --version
Python3.8.13(venv38) ➜ ~ pyenv deactivate
➜ ~