對(duì)Python 兩大環(huán)境管理神器 pyenv 和 virtualenv詳解
簡(jiǎn)介
pyenv 是一個(gè)開(kāi)源的 Python 版本管理工具,可以輕松地給系統(tǒng)安裝任意 Python 版本,想玩哪個(gè)版本,瞬間就可以切換。有了 pyenv,我們不需要再為系統(tǒng)多版本 Python 共存問(wèn)題而發(fā)愁,也不用為手動(dòng)編譯安裝其他 Python 版本而浪費(fèi)時(shí)間,只需要執(zhí)行一條簡(jiǎn)單的命令就可以切換并使用任何其他版本,該工具真正地做到了開(kāi)箱即用,簡(jiǎn)單實(shí)用。
virtualenv 是一個(gè)用來(lái)創(chuàng)建完全隔離的 Python 虛擬環(huán)境的工具,可以為每個(gè)項(xiàng)目工程創(chuàng)建一套獨(dú)立的 Python 環(huán)境,從而可以解決不同工程對(duì) Python 包,或者版本的依賴(lài)問(wèn)題。假如有 A 和 B 兩個(gè)工程,A 工程代碼要跑起來(lái)需要 requests 1.18.4,而 B 工程跑起來(lái)需要 requests 2.18.4,這樣在一個(gè)系統(tǒng)中就無(wú)法滿(mǎn)足兩個(gè)工程同時(shí)運(yùn)行問(wèn)題了。最好的解決辦法是用 virtualenv 給每個(gè)工程創(chuàng)建一個(gè)完全隔離的 Python 虛擬環(huán)境,給每個(gè)虛擬環(huán)境安裝相應(yīng)版本的包,讓程序使用對(duì)應(yīng)的虛擬環(huán)境運(yùn)行即可。這樣既不影響系統(tǒng) Python 環(huán)境,也能保證任何版本的 Python 程序可以在同一系統(tǒng)中運(yùn)行。
最佳實(shí)踐:使用 pyenv 安裝任何版本的 Python,然后用 virtualenv 創(chuàng)建虛擬環(huán)境時(shí)指定需要的 Python 版本路徑,這樣就可以創(chuàng)建任何版本的虛擬環(huán)境,這樣的實(shí)踐真是極好的!
pyenv 的安裝及使用
1. 安裝
將 pyenv 安裝到 ~/.pyenv 目錄(當(dāng)然你可以安裝到任意其他路徑)
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
配置環(huán)境變量(我的 Shell 是 zsh,如果是 bash,請(qǐng)?zhí)砑拥?~/.bashrc)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
添加 pyenv 初始化(我的 Shell 是 zsh,如果是 bash,請(qǐng)?zhí)砑拥?~/.bashrc)
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
使當(dāng)前 Shell 配置生效,完成安裝
exec $SHELL source ~/.zshrc
2. 使用
查看有哪些 Python 版本可以安裝
pyenv install --list
安裝某個(gè) Python 版本
pyenv install -v 3.6.4
查看當(dāng)前 Python 版本情況(* 表示系統(tǒng)當(dāng)前的 Python 版本,system表示系統(tǒng)初始版本)
$ pyenv versions system 2.6.7 * 3.6.4 (set by /Users/haohao/.pyenv/version)
切換 Python 版本(切換之后查看當(dāng)前版本)
$ pyenv global 3.6.4 $ pyenv versions system * 3.6.4 (set by /Users/haohao/.pyenv/version) $ python -V Python 3.6.4
卸載某個(gè) Python 版本
pyenv uninstall 3.6.4
virtualenv 的安裝及使用
1. 安裝
sudo pip install virtualenv
2. 使用
下面我們使用 virtualenv 創(chuàng)建一個(gè)完全隔離的 Python 虛擬環(huán)境:
1.新建一個(gè)目錄(一般用來(lái)用作工程路徑)
$ mkdir myproject
2.進(jìn)入目錄創(chuàng)建一個(gè)完全獨(dú)立干凈的虛擬環(huán)境
如果 virtualenv 后面不加任何參數(shù),那么默認(rèn)創(chuàng)建的虛擬環(huán)境的 Python 版本是系統(tǒng)當(dāng)前版本,如果要?jiǎng)?chuàng)建其他版本,可以使用 -p 參數(shù)指定其他版本的 python 可執(zhí)行文件路徑??蓤?zhí)行文件可以在上一步安裝的 pyenv 的 ~/.pyenv/versions 路徑找到,該路徑是 pyenv 管理的所有 Python 版本路徑。
# 使用系統(tǒng)當(dāng)前的 Python 版本創(chuàng)建虛擬環(huán)境 $ virtualenv venv New python executable in /Users/haohao/PycharmProjects/myproject/venv/bin/python # 創(chuàng)建虛擬環(huán)境時(shí)指定 Python 版本 $ virtualenv -p ~/.pyenv/versions/2.6.7/bin/python venv Running virtualenv with interpreter /Users/haohao/.pyenv/versions/2.6.7/bin/python New python executable in /Users/haohao/PycharmProjects/myproject/venv/bin/python Installing setuptools<37, pip, wheel<0.30...done.
3.激活創(chuàng)建的虛擬環(huán)境并使用
可以看出當(dāng)前虛擬環(huán)境版本已經(jīng)是 Python 2.6.7 了,而且所在路徑確實(shí)是在上一步創(chuàng)建的虛擬環(huán)境路徑。接下來(lái)使用 pip 安裝的任何包都會(huì)安裝在虛擬環(huán)境目錄里面,不會(huì)安裝在系統(tǒng)標(biāo)準(zhǔn)目錄,從而保證當(dāng)前環(huán)境是絕對(duì)干凈的,對(duì)于系統(tǒng)是完全隔離的。
$ source venv/bin/activate $ which python /Users/haohao/PycharmProjects/myproject/venv/bin/python $ python -V Python 2.6.7
4.退出虛擬環(huán)境,回到系統(tǒng)版本
$ deactivate
以上這篇對(duì)Python 兩大環(huán)境管理神器 pyenv 和 virtualenv詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python快速搭建HTTP服務(wù)和文件共享服務(wù)的實(shí)例講解
今天小編就為大家分享一篇使用Python快速搭建HTTP服務(wù)和文件共享服務(wù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python for Informatics 第11章之正則表達(dá)式(二)
這篇文章主要介紹了Python for Informatics 第11章 正則表達(dá)式(二)的相關(guān)資料,需要的朋友可以參考下2016-04-04PyCharm Python Console中文輸出亂碼問(wèn)題及解決
這篇文章主要介紹了PyCharm Python Console中文輸出亂碼問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Python使用grequests并發(fā)發(fā)送請(qǐng)求的示例
這篇文章主要介紹了Python使用grequests并發(fā)送請(qǐng)求的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-11-11利用Pygame制作簡(jiǎn)單動(dòng)畫(huà)的示例詳解
Pygame是被設(shè)計(jì)用來(lái)寫(xiě)游戲的python模塊集合,Pygame是在優(yōu)秀的SDL庫(kù)之上開(kāi)發(fā)的功能性包。本文將利用Pygame制作簡(jiǎn)易的動(dòng)畫(huà),感興趣的可以學(xué)習(xí)一下2022-05-05Python中搜索和替換文件中的文本的實(shí)現(xiàn)(四種)
本文主要介紹了Python中搜索和替換文件中的文本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10Python列表原理與用法詳解【創(chuàng)建、元素增加、刪除、訪(fǎng)問(wèn)、計(jì)數(shù)、切片、遍歷等】
這篇文章主要介紹了Python列表原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了Python列表的創(chuàng)建、元素增加、刪除、訪(fǎng)問(wèn)、計(jì)數(shù)、切片、遍歷、排序等各種常見(jiàn)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2019-10-10