如何管理 python 的各種版本 | 使用 pyenv 和 virtualenv
Published in
6 min readDec 3, 2019
在使用 python 時,我們常常需要不同的 python 版本。另外,身為一個潔癖者,總是想要刪除和管理 python 的安裝套件,希望他能夠維持一個乾淨的環境。因此,我們需要使用 pyenv
和 virtualenv
。
pyenv
用來管理 python 版本,virtualenv
是管理 python packages
以下都是使用 Mac OS 的環境
Pyenv
- 使用 homebrew 安裝:
brew install pyenv
- 設定環境變數,如果使用
bash
請把以下指令貼到~/.bashrc
或~/.bash_profile
,使用zsh
則貼到~/.zshrc
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"if which pyenv > /dev/null;
then eval "$(pyenv init -)";
fi
- 接著,重新啟動 SHELL:
exec $SHELL
Pyenv 常用命令
- 查看可安裝的 python 版本:
pyenv install -l
- 查看已安裝的 python 版本:
pyenv versions
- 存放位置:
~/.pyenv/versions
- 安裝 python:
pyenv install <version> # <version> 是想要安裝的python 版本號
- 刪除 python:
pyenv uninstall <version>
Python 版本管理
pyenv global <version>
pyenv local <version>
pyenv shell <version>
pyenv global <version>
:全局設置python為指定版本,將版本號寫入~/.pyenv/version
pyenv local <version>
:設置當前路徑下 python 版本為指定版本,將指定的版本號寫入當前目錄下的.python-version
,設置的 python 版本會比 global 高pyenv shell <version>
:將當前 shell 窗口的 python 設定為指定版本,設置當前 shell 的 PYENV_VERSION。比 global 和 local 都要高。可以透過-unset
以取消目前 shell 的版本
[2021.3.16 補充]
不知道為什麼 mac 升上 11.1 之後,pyenv install
就不能用了,如果有一樣困擾的人,可以試試看以下面的指令安裝 python 版本看看,記得把其中的 3.6.6 換成自己想安裝的版本
CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.6.6 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
Virtual Environments
- 安裝:
pip3 install virtualenv virtualenvwrapper
- 設定環境變數,如果使用
bash
請把以下指令貼到~/.bashrc
或~/.bash_profile
,使用zsh
則貼到~/.zshrc
# pyenv-virtualenv
if which pyenv-virtualenv-init > /dev/null;
then eval "$(pyenv virtualenv-init -)";
fi# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
- 接著,重新啟動 SHELL:
exec $SHELL
virtualenv 的常用指令
- 移動到專案資料夾
- 創建一個虛擬環境,在
<ENV_NAME>
中填入任何你想要取的名字,我在這邊取名叫my_env
# 使用環境預設的 Python 版本
virtualenv <ENV_NAME>
virtualenv myenv# 利用 pyenv 創建的 Python 指定版本
virtualenv -p ~/.pyenv/versions/3.6.6/bin/python my_env
- 啟動虛擬環境:
source my_env/bin/activate
python3 --version
>> Python 3.6.6which python
>> /Users/smhsu/env_practice/my_env/bin/python
- 退出虛擬環境:
deactivate
經過以上步驟之後,我們就可以自由變換不同 Python 版本和安裝虛擬環境了。但是,如果只使用 virtualenv
,我們需要在每次創建專案資料夾時,都重複生成一個新的虛擬環境,十分不便。
因此,以下我們介紹一個很方便的套件 virtualenvwrapper
,能夠幫助我們集中管理並且複製環境。
如果你完全按照上面的安裝步驟,會發現我們已經偷偷安裝好virtualenvwrapper
了,再來來看如何使用吧。
virtualenvwrapper 的常用指令
- 建立虛擬環境
# 使用環境預設的 Python 版本
mkvirtualenv <ENV_NAME>
virtualenv myenv# 利用 pyenv 創建的 Python 指定版本
mkvirtualenv -p ~/.pyenv/versions/3.6.6/bin/python3 my_env
- 查看已安裝的虛擬環境:
lsvirtualenv
- 刪除虛擬環境:
rmvirtualenv <ENV_NAME>
- 啟動虛擬環境:
workon <ENV_NAME>
- 退出虛擬環境:
deactivate
參考資料
感謝你的收看,如果對你有幫助的話,別忘了給我拍手鼓勵哦 👏🏼