Pyenv是一個 python的版本控制管理套件,可以自由安裝和切換 python的版本,也可以同時搭配 env虛擬環境使用,讓 python 的專案更可以靈活開發與管理。
安裝 pyenv
- 先更新套件和安裝相關依賴
以下是以 Centos 9 / Redhat 8 為例子,其他 OS或版本的依賴套件可能有不同的名稱,安裝前請先確認。
yum update
yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel
2. 從 GitHub上下載 pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
3. 在 ~/.bashrc 加入相關路徑和 pyenv init
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
如果是其他 shell(例如Zsh、Fish shell),請參考連接
4. 重新執行 shell,讓設定生效
exec "$SHELL"
# or source ~/.bashrc
5. 執行以下指令就可以確認是否有安裝成功
pyenv versions
出現以下訊息就是安裝成功,system 代表原本系統的 python 版本
安裝不同版本 python
- 先查看可以安裝的版本
pyenv install -l
會列出各種版本可以選擇
2. 安裝其中一種 python的版本 (以3.10.12版本為例)
pyenv install -v 3.10.12
3. 列出已安裝過的版本
pyenv versions
- 如果安裝成功,就會出現曾經安裝過的版本清單。
- 前面的星號代表目前所使用的版本,因為我們剛安裝3.10.12,還沒切換過去,所以還是在system。
如果在安裝時遇到 Permission denied 相關的錯誤 ,通常是因為權限設置導致,可以嘗試以下的方法:
方法1:使用 sudo 安装
方法2:修改 .pyenv 目錄權限
可以藉由更改 .pyenv 的目錄權限,使用戶有寫入權限
# 方法1
sudo pyenv install -v 3.12.4
# 方法2
sudo chown -R $(whoami):$(whoami) /home/$(whoami)/.pyenv
4. 安裝完成後,就可自由切換 Python的版本,有以下三種模式 global、local 或 shell 可以選擇
pyenv shell 3.10.12
pyenv local 3.10.12
pyenv global 3.10.12
在 pyenv中, global、local和 shell這三個命令都可以用來切換 Python版本,但它們的作用範圍有所不同:
pyenv global [version]:
設置全局 Python版本,「當前使用者」的所有 shell都有效pyenv local [version]:
在當前目錄下設置 Python版本,這只對當前目錄及其子目錄有效pyenv shell [version]:
在當前shell中切換Python版本,只對當前shell會話有效,也就是說這是臨時的,當shell退出時,此命令將失效優先順序是 shell > local > global
pyenv shell版本將會覆蓋pyenv local版本,並且pyenv local版本會覆蓋pyenv global版本,如果你在同一個shell中使用了pyenv shell和pyenv local或pyenv global,則pyenv shell設置的版本將優先使用。同樣,如果你在一個設置了pyenv local版本的目錄中使用了pyenv global,則pyenv local設置的版本將優先使用。
5. 查看切換完後的版本
查看目前 python版本
python -V
# or python --version
# or python3 --version
# or pyenv versions
如果切換成功,會出現你所選的版本,如下圖
如果要切回系統預設的版本,執行下列的指令,system 代表原本系統預設的 python版本
pyenv global system
# or pyenv local system
# or pyenv shell system
要注意切回預設的版本一樣有 shell > local > global的優先順序
解除安裝
- 若只要刪除不需要的 Python版本,請使用
pyenv uninstall <versions>
pyenv uninstall 3.10.12
2. 若要完全解除安裝 Pyenv,請先在 ~/.bashrc中刪除所有 Pyenv的設定,然後執行下列指令刪除其根目錄
rm -rf $(pyenv root)
這會刪除該目錄下所有安裝的 Python版本