Python使用pyenv實(shí)現(xiàn)多環(huán)境管理
1 背景&概述
因某些需求,需要安裝 TensorFlow ,很自然地在終端敲下了以下命令:
pip install tensorflow
然后。。。

好家伙???
居然沒(méi)有??
因?yàn)槭?Python 3.9 ,去 pypi 搜索了,居然還真沒(méi)有支持的,最高只有 Python 3.8 :

于是便考慮一個(gè)多版本的 Python 環(huán)境,碰巧就在 Github 上看到了一個(gè) 22.3k 的東西:

這就是 pyenv ,一個(gè)簡(jiǎn)單的 Python 版本管理器,可以輕松地在各個(gè) Python 版本之間進(jìn)行切換。
好了廢話不說(shuō),進(jìn)入正題。
2 安裝
安裝有兩種方式:
- 自動(dòng)安裝
- 手動(dòng)安裝
2.1 自動(dòng)安裝
curl https://pyenv.run | bash # 或 curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
2.2 手動(dòng)安裝
手動(dòng)安裝大致分為三步:
- 安裝pyenv
- 配置環(huán)境變量
- 初始化
2.2.1 安裝 pyenv
筆者系統(tǒng) Manjaro ,可以直接 yay 安裝:
yay -S pyenv
其他系統(tǒng)的可以使用 apt search / yum search 等看看軟件包倉(cāng)庫(kù)有沒(méi)有,有的話直接安裝即可,沒(méi)有的話,可以 clone 安裝:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
( 這一步是可選的 )接著就是編譯動(dòng)態(tài) bash 擴(kuò)展進(jìn)行加速:
cd ~/.pyenv && src/configure && make -C src
官方解釋說(shuō),不用害怕編譯失敗,因?yàn)槿匀粫?huì)正常工作。
2.2.2 配置環(huán)境變量
這一步就是把 PYENV 以及更新后的 PATH 配置成環(huán)境變量,官方文檔按照 shell 類型進(jìn)行了分類,根據(jù)自己情況選擇即可。
2.2.2.1 bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
2.2.2.2 Zsh
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
2.2.2.3 Fish shell
set -Ux PYENV_ROOT $HOME/.pyenv set -Ux fish_user_paths $PYENV_ROOT/bin $fish_user_paths
2.2.3 初始化
配置完環(huán)境變量后還要進(jìn)行初始化操作,文檔同樣按 shell 類型進(jìn)行了分類。
2.2.3.1 bash
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
2.2.3.2 Zsh
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
2.2.3.3 Fish shell
echo -e '\n\n# pyenv init\nif command -v pyenv 1>/dev/null 2>&1\n pyenv init - | source\nend' >> ~/.config/fish/config.fish
2.3 測(cè)試
重新開(kāi)啟一個(gè)終端,輸入 pyenv ,輸出如下信息就表明安裝成功了:

3 基本使用
- pyenv commands:查看所有pyenv命令
- pyenv exec:使用特定Python版本執(zhí)行某條命令
- pyenv global:設(shè)置或查看全局Python版本
- pyenv hooks:列出給出的pyenv命令的鉤子腳本
- pyenv init:配置shell環(huán)境
- pyenv install:安裝某個(gè)版本的Python
- pyenv local:為某個(gè)應(yīng)用設(shè)置特定的Python版本
- pyenv prefix:顯示對(duì)應(yīng)Python版本的路徑前綴
- pyenv rehash:再哈希pyenv shims(不清楚有什么用,歡迎評(píng)論補(bǔ)充)
- pyenv root:顯示pyenv根目錄
- pyenv shell:為某個(gè)shell設(shè)置特定的Python版本(與pyenv local類似)
- pyenv shims:列出當(dāng)前存在的shims(pyenv的工作原理就是在一個(gè)叫shims的目錄下創(chuàng)建Python解釋器的“假版本”,尋找Python應(yīng)用時(shí)先從該目錄查找)
- pyenv uninstall:卸載某個(gè)版本Python
- pyenv --version:顯示pyenv版本
- pyenv version:顯示當(dāng)前Python版本,等價(jià)于pyenv version-name+pyenv version-file
- pyenv version-file/version-name/version-origin:當(dāng)前Python版本對(duì)應(yīng)的文件/名字/位置
- pyenv whence:列出已安裝的一個(gè)范圍內(nèi)的Python版本,比如列出本地安裝的Python2到Python3的版本,可以使用pyenv whence 2to3
- pyenv which:列出可執(zhí)行文件的絕對(duì)路徑,比如pyenv which python可以列出python命令的絕對(duì)路徑
4 實(shí)際應(yīng)用
雖然上面說(shuō)了這么多命令,但實(shí)際使用頻率高的命令并不多,主要有以下幾個(gè):
- pyenv version
- pyenv install
- pyenv global
一般安裝的步驟如下,先使用
pyenv install -l
查找需要安裝的 Python 版本:

這里還有一大串,就不全部截圖了,比如需要安裝 3.6.12 版本:
pyenv install 3.6.12
安裝之后可以使用
pyenv versions
查看安裝的版本,這里筆者安裝有兩個(gè),一個(gè)是系統(tǒng)自帶的 Python3.9 ,一個(gè)是 pyenv 安裝的 Python3.6 :

接著使用
pyenv global 3.6.12
切換到新安裝的版本:

這樣就切換到了新安裝的版本,如果不是全局替換而是局部替換的話可以使用 pyenv local / pyenv shell 。
要注意的是切換版本后 pip 的版本也會(huì)不一樣,而且兩個(gè)版本使用 pip 安裝的包也是獨(dú)立的:


5 參考
到此這篇關(guān)于Python使用pyenv實(shí)現(xiàn)多環(huán)境管理的文章就介紹到這了,更多相關(guān)Python pyenv多環(huán)境管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python+pillow繪制矩陣蓋爾圓簡(jiǎn)單實(shí)例
這篇文章主要介紹了Python+pillow繪制矩陣蓋爾圓簡(jiǎn)單實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
python列表去重的5種常見(jiàn)方法實(shí)例
在Python編程過(guò)程中經(jīng)常會(huì)遇到列表去重的問(wèn)題,下面這篇文章主要給大家介紹了python列表去重的5種常見(jiàn)方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
在Python 3中實(shí)現(xiàn)類型檢查器的簡(jiǎn)單方法
這篇文章主要介紹了在Python 3中實(shí)現(xiàn)類型檢查器的簡(jiǎn)單方法,包括對(duì)函數(shù)注解這個(gè)新特性的介紹,需要的朋友可以參考下2015-07-07
Python使用itertools模塊實(shí)現(xiàn)排列組合功能示例
這篇文章主要介紹了Python使用itertools模塊實(shí)現(xiàn)排列組合功能,涉及Python基于itertools模塊product、permutations與combinations_with_replacement方法進(jìn)行排列、組合等相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-07-07
對(duì)Pytorch 中的contiguous理解說(shuō)明
這篇文章主要介紹了對(duì)Pytorch 中的contiguous理解說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
利用OpenCV+Tensorflow實(shí)現(xiàn)的手勢(shì)識(shí)別
這幾天沒(méi)事,想著再學(xué)點(diǎn)一些視覺(jué)識(shí)別方向的東西,因?yàn)橹白隽蓑?yàn)證碼識(shí)別,有了機(jī)器學(xué)習(xí)的信心,因此這次打算做個(gè)手勢(shì)識(shí)別,下面這篇文章主要給大家介紹了關(guān)于利用OpenCV+Tensorflow實(shí)現(xiàn)的手勢(shì)識(shí)別的相關(guān)資料,需要的朋友可以參考下2022-11-11

