如何在MacOS 中自由切換不同Python版本 - pyenv + virtualenv
假設要不同資料夾、不同專案設定不同的python版本,可以由以下兩中方式達成
- pyenv + virtualenv
- pyenv + pipenv
此篇介紹第一種方式pyenv 與virtualenv的組合,相對簡單明瞭。
mac os terminal操作步驟
- 更新pip
sudo pip3 install --upgrade pip - 用homebrew安裝pyenv-virtualenv (會一併的安裝這兩者與他們的dependency)
brew install pyenv-virtualenv - 安裝指定版本於本機,在此用python 3.7.7為例
pyenv install 3.7.7 - 以 python 3.7.7為版本,建立一個名為 venv377的虛擬環境
pyenv virtualenv 3.7.7 venv377 - 切換到專案的資料夾下
cd project_101 - 將預設的python版本使用venv377這個環境
pyenv local venv377
*pyenv 有三種scope: global, local, shell,顧名思義就是修改系統python、當前目錄python、以及目前登入terminal的shell
** 若是遇到Failed to activate virtualenv,是因為啟動shell時沒有加上pyenv, virtualenv 的init,please check "add script in .zshrc"
所以說,有兩個方法可以切換python版本
- 在virtualenv去指定某個版本就要在該目錄下第6步 - pyenv local project_py377這樣就會在該目錄下生成 .python-version裡面就會寫用什麼環境的python e.g.: venv377
- 在任何folder下指定某個版本就直接下 pyenv activate venv377, 即可用python3.7.7source deactivate就能脫逃
add script in .zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
$ exec $SHELL
$ source ~/.zshrc
當建立一個venv就會寫到.pyenv底下
pyenv virtualenv 3.6.9 venv369
Looking in links: /var/folders/p5/_wlzyj3j4ns4d50mhqfv688w0000gn/T/tmpesihap8e
Requirement already satisfied: setuptools in /Users/dragonjohn/.pyenv/versions/3.6.9/envs/venv369/lib/python3.6/site-packages (40.6.2)
Requirement already satisfied: pip in /Users/dragonjohn/.pyenv/versions/3.6.9/envs/venv369/lib/python3.6/site-packages (18.1)
其他指令中文介紹
官方github
留言
張貼留言