好家伙,妥妥的 Python Master
“
閱讀本文大概需要 6 分鐘。
以前介紹過非常地 Python 包管理工具,有 pip、 venv、pipenv、poetry、pdm 等

詳情見:https://python.iswbm.com/
今天來介紹一個更高層次的管理工具,可以直接管理 Python 解釋器的版本,同時也可以管理虛擬環(huán)境,它就是 pyenv。
pyenv 的一個典型使用場景就是,比如一個老項目需要使用 Python 2.x ,而另一個新項目需要 Python 3.x 。而 virtualenv 主要是用來管理相同版本 Python 不同項目的包的依賴不同的問題,就無法解決這個問題,這個時候就需要 pyenv。
有了 pyenv,你可以一鍵安裝、切換到任意你需要的 python 版本,從 2.1.3 -> 3.12-dev(稿前為止最新版本)。
除了常規(guī)的 CPython 之外,它還可以管理其他的 python 和 工具,包括:
-
graalpython
-
ironpython
-
jython
-
micropython
-
pypy
-
miniconda
-
anaconda
-
pyston
-
stackless
-
等等
好家伙,我愿稱之為 Python Env Master,而上面每個工具,還有細(xì)分的版本,不用擔(dān)心,pyenv 全部都有收錄,可以滿足你幾乎所有需求了。
# 1. 安裝與配置
先安裝 pyenv,由于我使用 macOS,使用 brew 可以很方便地安裝它
brew?update
brew?install?pyenv
安裝 pyenv 會安裝相當(dāng)多的依賴包,包括:
-
pyenv: pyenv 工具自身
-
pyenv-update: 用來更新 pyenv 的插件
-
pyenv-doctor: 驗證 pyenv 和依賴是否安裝的插件
-
pyenv-which-ext: 用來尋找相同命令的插件
使用 pyenv help 查看一下幫助命令,如果沒有報錯,說明安裝成功

另外,除了 pyenv,還要安裝一個插件 pyenv-virtualenv,它是專門用來管理 vitual environments 的
brew?install?pyenv-virtualenv
安裝好后,還要進(jìn)行一下初始化。
為了下次新開終端也可以立馬使用 pyenv,可以將下面兩條初始化命令寫入 .bash_profile或 .zshrc(根據(jù)自己實際情況而定)
eval?"$(pyenv?init?-)"
eval?"$(pyenv?virtualenv-init?-)"
然后再次執(zhí)行 source 使之立即執(zhí)行
source?~/.bash_profile
#?或
source?~/.zshrc
# 2. 基本使用
環(huán)境配置好后,那如何知道有哪些版本可以安裝呢?
可以使用如下命令查詢所有可安裝的項
pyenv?install?--list
比如我現(xiàn)在需要安裝的是 python3.8,但我不知道最新的小版本是多少,就可以使用上面命令查詢一下

發(fā)現(xiàn)最新的版本是 3.8.16,于是直接使用 install 來安裝它,再使用 pyenv versions 就可以看到我們安裝的版本了。

從上面截圖可以看到,安裝完后并不會自動切換過去,目前還是指向系統(tǒng)自帶的 Python,需要手動進(jìn)行版本的切換,切換方法有如下兩種:
pyenv?global?3.8.16
#?或?
pyenv?local?3.8.16
那這種有什么區(qū)別呢?簡單來說:
-
global:設(shè)置全局的 Python 解釋器,不管你在任何路徑下都是使用該版本的 Python
-
local:設(shè)置的是某特定目錄(或項目)的 Python 解釋器,只有在該目錄下才能用該版本的 Python
我們使用 pyenv versions 可以觀察下指向的 Python 版本,可以發(fā)現(xiàn)
-
只要進(jìn)入 wechat-chatgpt 目錄,就會使用 .python-version里的解釋
-
一旦離開 wechat-chatgpt 目錄,就又會使用全局的 Python 解釋器

想要切換回系統(tǒng)自帶的 Python ,也是同樣道理,將版本換成 system 即可
pyenv?global?system
# 3. 虛擬環(huán)境
pyenv 管理的每一個版本在 ~/.pyenv/versions 下都有對應(yīng)的目錄

當(dāng)然 pyenv 創(chuàng)建的虛擬環(huán)境也是在這下面,只不過我還沒有創(chuàng)建過虛擬環(huán)境。
現(xiàn)在使用使用如下命令創(chuàng)建一個
pyenv?virtualenv?3.8.16?wechat-chatgpt
可以發(fā)現(xiàn)不管在 ~/.pyenv/versions目錄下還是 pyenv versions都會新增一個環(huán)境

只要在對應(yīng)的目錄下使用 local 指定 Python 版本,就實現(xiàn)了項目與 Python 版本的綁定。實在是太友好啦~

另外列幾個虛擬環(huán)境管理的命令
-
查看所有虛擬環(huán)境:pyenv virtualenvs
-
刪除指定虛擬環(huán)境:pyenv virtualenv-delete
-
查看虛擬環(huán)境的真實的 Python 環(huán)境:pyenv virtualenv-prefix
# 4.?寫在最后
pyenv 從解釋器管理到虛擬環(huán)境管理,給了 Python 工程師一站式的體驗,對于那些需要維護(hù)很多項目并且有些項目依賴了不同的 Python 版本的人來說,請一定在你的電腦上安裝 pyenv,因為它實在太方便了。

End
崔慶才的新書《Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)(第二版)》已經(jīng)正式上市了!書中詳細(xì)介紹了零基礎(chǔ)用 Python 開發(fā)爬蟲的各方面知識,同時相比第一版新增了 JavaScript 逆向、Android 逆向、異步爬蟲、深度學(xué)習(xí)、Kubernetes 相關(guān)內(nèi)容,?同時本書已經(jīng)獲得 Python 之父 Guido 的推薦,目前本書正在七折促銷中!
內(nèi)容介紹:《Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)(第二版)》內(nèi)容介紹

掃碼購買
