在 MacOS 10.15 Catalina 即將公測之際,國外技術論壇發表了一篇名爲《macOS 10.15 Catalina棄用UNIX腳本語言》的帖子,其中說到:較舊的 Python 語言版本 2.7 在 MacOS 10.15 Catalina 中已被棄用,不會包含在 MacOS 10.16 中。其餘UNIX腳本語言(Ruby & Perl)也是如此。python
而後在 MacOS 10.14 以及以前的版本,都是內置的 Python2 版本。在此筆者也建議 Python 學習者直接學 Python3 。git
對於在 Mac 上,學習 Python 的同窗來講,避免不了安裝雙版本 Python 以及切換 Python 版本的狀況。那麼應該如何有效快速的切換呢?不少同窗必定會想到修改環境變量,指定 Python 的默認路徑,這樣固然能夠解決問題,可是不夠優雅,不夠簡潔,不夠快速。此時,pyenv 應運而生,它一個 Python 版本管理工具,它能夠改變全局的 Python 版本,安裝多個版本的 Python,設置目錄級別的 Python 版本,還能建立和管理 Python虛擬環境(virtual python environments )。github
PS:筆者體驗了一下 MacOS 10.15 內測版,確實一堆 BUG ,不建議升級。shell
官網地址:brew.sh/ 獲取安裝指令,進行安裝:macos
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
複製代碼
Homebrew安裝成功後,會自動建立目錄 /usr/local/Cellar 來存放Homebrew安裝的程序vim
PS:Homebrew 是 MacOS 下必裝工具之一,是一個很是高效的命令行軟件包管理器ruby
brew update
brew install pyenv
pyenv -v # 安裝以後查看 pyenv 版本,確認是否安裝成功
複製代碼
pyenv install 2.7.15
pyenv install 3.7.3
pyenv versions # 全部已經安裝的版本
複製代碼
zipimport.ZipImportError: can't decompress data; zlib not available make: *** [install] Error 1 複製代碼
詳情參考:問題追查分析bash
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
# 此時再安裝試試
pyenv install 3.7.3
# 查看全部已經安裝的版本,注:星號指定當前的版本
pyenv versions
複製代碼
PS:默認安裝路徑:~/.pyenv/shims/pythoncurl
使用方式: pyenv <命令> [<參數>]
命令:
commands 查看全部命令
local 設置或顯示本地的 Python 版本(當前目錄及其子目錄)
global 設置或顯示全局 Python 版本
shell 設置或顯示 shell 指定的 Python 版本(本次會話)
install 安裝指定 Python 版本
uninstall 卸載指定 Python 版本)
version 顯示當前的 Python 版本及其本地路徑
versions 查看全部已經安裝的版本
which 顯示安裝路徑
複製代碼
pyenv global 3.7.3 # 不建議全局切換
python -V # 驗證一下是否切換成功
pyevn global system # 切換回系統版本
pyenv local 3.7.3 # 當前目錄及其目錄切換
python -V # 驗證一下是否切換成功
pyenv local --unset # 解除local設置
pyenv shell 3.7.3 # 當前shell會話切換
python -V # 驗證一下是否切換成功
pyenv shell --unset # 解除shell設置
複製代碼
若是遇到切換以後,Python版本仍是系統的默認版本的話,就須要配置一下環境變量,在 ~/.zshrc 或 ~/.bash_profile 文件最後寫入:工具
export PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/shims:$PATH
if which pyenv > /dev/null;
then eval "$(pyenv init -)";
fi
複製代碼
使配置生效
source ~/.zshrc
# or
source ~/.bash_profile
複製代碼
PS:使用 pyenv 結合虛擬環境則會更增強大,筆者強烈推薦使用。
pyenv-virtualenv 是一款 pyenv 插件,能夠用來搭建基於不一樣 Python 版本、虛擬且獨立的 python 環境,可使每一個項目環境與其餘項目獨立開來,保持環境的乾淨,解決包衝突問題。
brew update
brew install pyenv-virtualenv
複製代碼
在 ~/.zshrc 或 ~/.bash_profile 文件最後寫入:
# pyenv-virtualenv
if which pyenv-virtualenv-init > /dev/null;
then eval "$(pyenv virtualenv-init -)";
fi
複製代碼
使生效
source ~/.zshrc
# or
source ~/.bash_profile
複製代碼
使用當前版本建立 virtualenv
# 當前版本爲 2.7.15
pyenv virtualenv xxx-2.5.15
複製代碼
指定版本建立 virtualenv
#pyenv virtualenv 版本號 虛擬環境名
pyenv virtualenv 3.7.3 test-3.7.3
複製代碼
pyenv versions
複製代碼
手動激活 & 停用:
# 激活
pyenv activate test-3.7.3
# 停用
pyenv deactivate
複製代碼
自動激活:
# 方式一:
# 手動把`虛擬環境名`寫入當前目錄的.python-version文件中
vim .python-version
# 啓動自動激活
pyenv activate test-3.7.3
# 停用自動激活
pyenv deactivate
# 方式二(推薦):
# 使用 pyenv local 虛擬環境名 (會自動將虛擬環境名寫入到當前目錄的.python-version文件中)
pyenv local test-3.7.3
# 停用並取消自定激活
pyenv local --unset
複製代碼
pyenv uninstall test-3.7.3 # 使用 pyenv uninstall 虛擬環境名
y # 輸入 y ,而後回車
複製代碼