如何在MacOS 中自由切換不同Python版本 - pyenv + virtualenv

 



假設要不同資料夾、不同專案設定不同的python版本,可以由以下兩中方式達成
  1. pyenv + virtualenv
  2. pyenv + pipenv
此篇介紹第一種方式pyenv 與virtualenv的組合,相對簡單明瞭。

mac os terminal操作步驟
  1. 更新pip
    sudo pip3 install --upgrade pip
  2. 用homebrew安裝pyenv-virtualenv (會一併的安裝這兩者與他們的dependency)
    brew install pyenv-virtualenv
  3.  安裝指定版本於本機,在此用python 3.7.7為例
    pyenv install 3.7.7
  4. 以 python 3.7.7為版本,建立一個名為 venv377的虛擬環境
    pyenv virtualenv 3.7.7 venv377
  5. 切換到專案的資料夾下
    cd project_101
  6. 將預設的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版本
  1. 在virtualenv去指定某個版本
    就要在該目錄下第6步 - pyenv local project_py377
    這樣就會在該目錄下生成 .python-version
    裡面就會寫用什麼環境的python e.g.: venv377
  2. 在任何folder下指定某個版本
    就直接下 pyenv activate venv377, 即可用python3.7.7
    source 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




留言

這個網誌中的熱門文章

[專案] 銀行端末系統

用 C# 控制 Win7 輸入法