一文讀懂Python版本管理工具Pyenv使用

2022-09-25 16:09:09 字數 2786 閱讀 4812

在日常運維中, 經常遇到這樣的情況: 系統自帶的python是2.x,而業務程式設計客棧部署需要python 3.x 環境, 此時需要在系統中安裝多個python版本,但又不能影響系統自帶的python 版本,即需要實現python的多版本環境共存, pyenv就是這樣乙個python版本管理器, 可以同時管理多個python版本共存! 簡單的說,pyenv 可以根據需求使使用者在系統裡安裝和管理多個python 版本:

- 配置當前使用者的python的版本;

- 配置當前shell的python版本;

- 配置某個專案(目錄及子目錄)的python版本;

- 配置多個虛擬環境.

由於python的各種優點,當前學習及使用python的人越來越多, 學習python有乙個不容忽視的問題就是python的版本問題! 到現在為止,python的版本有很多,但是問題在於python2與python3的區別。python3的對一些模組進行了改變,導致了python2寫的**有的不被python3相容,從而導致程式執行報錯。因此,在學習和工作中使用python的時候,最好是安裝乙個pyenv管理器, 多安裝幾個python版本進行管理, 然後再針對不同專案安裝各自專案的python虛擬環境, 相互隔離, 這樣便於使用和管理。

pyenv是利用系統環境變數path的優先順序,劫持python的命令到pyenv上,根據使用者所在的環境或目錄,使用不同版本的python。

下面看看python版本管理工具pyenv使用

1. 首先安裝所需依賴,在ubuntu/debian/mint(debian系)上:

sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \

libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \

libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

2. 接著執行

$ curl | bash

3. 重啟shell

exec $shell

4. 檢視~/.bashrc檔案,如果檔案最末尾處沒有以下三行**,則在末尾處追加以下內容程式設計客棧。如果有,忽略步驟4。

export pyenv_root="$home/.pyenv"

export path="$pyenv_root/bin:$path"

eval "$(pyenv init --path)"

接著執行: source ~/.bashrc

最後重啟shell以生效: exec "$shell"

1. 點選以下位址,**所需檔案:

2. 在home目錄下建立 .pyenv 資料夾,解壓剛才**的檔案,將其中的pyenv-win資料夾整個移動至 home/.pyenv 資料夾下

3. 接著開啟powershell或者windows terminal,逐行輸入並回車以下命令

[system.environment]::setenvironmentvariable('pyenv',$env:userprofile + "\.pyenv\pyenv-win\","user")

[system.environment]::setenvironmentvariable('pyenv_home',$env:userprofile + "\.pyenv\pyenv-win\","user")

[system.enviro程式設計客棧nment]::setenvironmentvariable('path', $env:userprofile + "\.pyenv\pyenv-win\bin;" + $env:userprofile + "\.pyenv\pyenv-win\shims;" + [system.environment]::getenvironmentvariable('path', "user"),"user")

pyenv常用命令

# 檢視pyenv當前支援哪些python版本

pyenv install --list

# 安裝指定的python版本

pyenv innvrukdllfbstall ***

# 列出本地pyenv中所有可用的python版本

pyenv versions

# 解除安裝某個版本

pyenv uninstall 3.9.1

# 為所有已安裝的可執行檔案建立shims,因此,每當你增刪了python版本或帶有可執行檔案的包(如pip以後,都應該執行一次本命令)

pyenv rehash

使用pyenv安裝指定的python版本

**安裝

離線安裝

1. 首先**離線的包,如3.7.5的**為: 

2. 接著在home的.pyenv目錄下建乙個cache的資料夾,將**下來的包移動至這個資料夾

在命令列中cd進這個目錄,然後執行pyenv install 3.7.5即可

切換python版本

python版本的優先順序順序:shell > local> global

注:pyenv會從當前目錄開始向上逐級查詢.python-versiob檔案,直到根目錄為止,若找不到,則使用global程式設計客棧版本。

pyenv which python  # 檢視當前的python版本具體的位置

完全刪除pyenv

rm -fr ~/.pyenv

並且清理掉~/.bashrc檔案中寫入末尾的三行

接著執行: source ~/.bashrc

最後重啟shell以生效: exec "$shell"

python 一文讀懂 GIL

1.python 的直譯器分為 cpython 預設直譯器 和 jpython,由於歷史原因,在 cpython 上難以移除 gil 2.每個執行緒執行是都需要先獲取 gil,保證同一時刻只有乙個執行緒可以執行 所以 python 的多執行緒並不是真正的多執行緒,不能利用多核的 cpu 資源,但多程...

一文讀懂Nginx

問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...

一文讀懂SpringMVC

主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...