Python 版本管理/虛擬環境:Pyenv 安裝 & 使用
簡介
Pyenv 是一款十分流行的 Python 版本管理工具,是使用純 Shell 腳本編寫的。
Pyenv 的主要功能:
- 安裝多個 Python 版本:用戶可以輕松安裝各種版本的 Python,包括官方的 CPython、Anaconda、PyPy 等。
- 版本切換:通過簡單的命令,用戶可以在全局、項目或 shell 會話中切換 Python 版本。
- 虛擬環境支持:結合 ?pyenv-virtualenv 插件,用戶可以創建和管理虛擬環境,更加方便地隔離項目依賴。
- 簡化管理:提供簡單的命令行工具,使得安裝、卸載和切換 Python 版本變得更加直觀。
如何安裝
1. 獲取Pyenv
-
macOS:
brew update brew install pyenv -
自動安裝器,用于包括 macOS 和 Linux 在內的類 Unix 系統:
curl https://pyenv.run | bash如果通過這種方式安裝,可能需要安裝必要的構建工具。
https://github.com/pyenv/pyenv/issues/2888
sudo apt install build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev curl \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
2. 設置環境變量
如果使用 zsh, 將以下文本添加至~/.zshrc 和 ~/.zprofile 中。bash同理。
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
注:如果有更多需求,請看原文。
比如,有些系統(如Cent OS)的 bash 可能會進入無限循環。Debian/Ubuntu 無此問題。
3. 重啟 shell
或者
source ~/.zshrc
使用指南
安裝一個 Python 版本。
pyenv install 3 # 安裝最新的 3.x.x
pyenv install 3.13 # 安裝最新的 3.13.x
pyenv install 3.13.2 # 安裝指定的
當然,你也可以使用 pyenv install -l 來看所有可用的版本,特別是其他 python 的各種分支。
使用
pyenv latest -k <prefix>可以查看某個前綴在安裝的時候會被補全為什么樣子。當使用不完全的前綴的時候,
pyenv install安裝最新的可用版本,其他指令對應的是最新的已安裝的版本。
切換 Python 版本。
使用以下指令可以用來切換 pyenv 安裝的 python,優先級從上到下依次降低。
如果版本指定的是 system,或者沒有指定,則使用系統自帶的python。
-
pyenv shell:僅對當前 shell 會話生效,優先級最高。原理:
export PYENV_VERSION=<version> -
pyenv local:對當前目錄及其子目錄生效。原理:對
./.python-version文件進行寫入,對當前目錄或者最近的父目錄進行讀取。 -
pyenv global:對當前用戶生效。原理:對
$PYENV_ROOT/version文件進行寫入和讀取。
更多用法,請看:https://github.com/pyenv/pyenv/blob/master/COMMANDS.md
或者
pyenv help shell/local/global
卸載 Python 版本。
pyenv uninstall <version>
更新 Pyenv
更新可以獲取最新的 Python 版本列表。
- 如果是 brew 安裝的:
brew upgrade pyenv - 否則:
pyenv update
Pyenv-virtualenv
如果需要使用虛擬環境,可以安裝這個插件。
安裝
Brew: 如果 pyenv 是通過 brew 安裝的,則該插件也使用 brew 安裝
brew install pyenv-virtualenv
否則,使用如下方法。
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
安裝完畢之后,在shell 的 .rc 文件中添加:
eval "$(pyenv virtualenv-init -)"
創建虛擬環境
pyenv virtualenv <python_version> <vertualenv_name>
# or
pyenv virtualenv <vertualenv_name> # 使用當前激活的 python 版本
激活虛擬環境
創建后,如果使用pyenv local <name>,則下次會自動激活該虛擬環境。
pyenv activate <name> # 作用和 pyenv shell <name> 差不多,但是后者無法被 deactivate
pyenv deactivate
刪除虛擬環境
pyenv uninstall <name>
# or
python virtualenv-delete <name>

浙公網安備 33010602011771號