[Python 版本控制] pyenv 基本教學

House Hsu
6 min readDec 19, 2023

--

Created Using DALL.E 3

Pyenv是一個 python的版本控制管理套件,可以自由安裝和切換 python的版本,也可以同時搭配 env虛擬環境使用,讓 python 的專案更可以靈活開發與管理。

安裝 pyenv

  1. 先更新套件和安裝相關依賴

以下是以 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

  1. 先查看可以安裝的版本
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的優先順序

解除安裝

  1. 若只要刪除不需要的 Python版本,請使用pyenv uninstall <versions>
pyenv uninstall 3.10.12

2. 若要完全解除安裝 Pyenv,請先在 ~/.bashrc中刪除所有 Pyenv的設定,然後執行下列指令刪除其根目錄

rm -rf $(pyenv root)

這會刪除該目錄下所有安裝的 Python版本

--

--

House Hsu
House Hsu

Written by House Hsu

💻️Software Engineer | 💡️Backend, AI, Data Science | 🌐Rewrite the world, just like rewriting code, but hoping there won't be any bugs this time.

No responses yet