Python虛擬環(huán)境、環(huán)境配置文件requirements.txt

虛擬環(huán)境概念

安裝python開發(fā)環(huán)境時(shí)交惯,相當(dāng)于安裝了一個(gè)全局的環(huán)境,包含了
site-packages(python第三方包穿仪,pip install 安裝的包都在該目錄下)席爽、Scripts(可執(zhí)行文件,pip install 時(shí)就會(huì)使用pip.exe這個(gè)可執(zhí)行文件)牡借、python.exe(python解釋器)等文件

image.png

虛擬環(huán)境可以看作是原生Python的副本拳昌,但是標(biāo)準(zhǔn)庫(os,sys, math 等等)都是一樣的

虛擬環(huán)境用途

  1. python 項(xiàng)目開發(fā)時(shí)通常會(huì)使用不屬于標(biāo)準(zhǔn)庫的包和模塊,例如一些開源的類庫包钠龙。有時(shí)需要特定版本的庫

  2. 這意味著一個(gè) python包的安裝可能無法滿足各個(gè)項(xiàng)目程序的要求。如果項(xiàng)目A需要某個(gè)包的 1.0 版御铃,而項(xiàng)目B需要 2.0 版碴里,則要求發(fā)生沖突,安裝 1.0 或 2.0 版將導(dǎo)致一個(gè)項(xiàng)目無法運(yùn)行上真。

  3. 這個(gè)問題的解決方案是每個(gè)項(xiàng)目創(chuàng)建一個(gè)自己的虛擬環(huán)境咬腋,一個(gè)自包含的目錄樹,其中包含特定版本的 Python 的 Python 安裝睡互,以及一些額外的包

  4. 不同的應(yīng)用程序可以使用不同的虛擬環(huán)境根竿。為了解決前面的沖突需求示例陵像,項(xiàng)目A可以擁有自己的安裝了 1.0 版的虛擬環(huán)境,而項(xiàng)目B可以擁有另一個(gè)安裝了 2.0 版的虛擬環(huán)境寇壳。如果項(xiàng)目B需要將庫升級(jí)到版本 3.0醒颖,這不會(huì)影響項(xiàng)目A的環(huán)境

    因此,我們需要虛擬環(huán)境用來隔離以減少解決環(huán)境問題帶來的額外開支

虛擬環(huán)境的使用

python3.3 之后venv已經(jīng)作為標(biāo)準(zhǔn)庫嵌入到了python中壳炎,而之前的版本需要借助virtualenv這個(gè)第三方庫來實(shí)現(xiàn)

創(chuàng)建虛擬環(huán)境

# 指令如下:python -m venv 安裝路徑

# windows
python -m venv venv
#linux/macos
python3 -m venv venv

創(chuàng)建后泞歉,當(dāng)前目錄下多了一個(gè)名為venv的文件夾,該目錄下結(jié)構(gòu)為

image.png

進(jìn)入Lib查看目錄結(jié)構(gòu):無標(biāo)準(zhǔn)庫匿辩,只有第三方庫site-packages
進(jìn)入site-packages查看目錄結(jié)構(gòu):只有類似pip的少量包腰耙,是純凈的

激活/進(jìn)入虛擬環(huán)境

# windows
venv\Scripts\activate
# linux/macox
source venv/bin/activate

image.png

命令行頭部,多了(venv)的字樣铲球,此模式下運(yùn)行項(xiàng)目代碼挺庞,包的路徑將會(huì)有虛擬機(jī)中的環(huán)境

image.png

使用測試一下

  1. pip list 顯示中已經(jīng)沒有全局環(huán)境里的庫,是個(gè)純凈的第三方庫
  2. 使用pip install xxx 安裝個(gè)第三方包后稼病,pip list將會(huì)顯示挠阁,但在虛擬環(huán)境外,全局的pip list中并無此包

退出/停止虛擬環(huán)境

#windows/linux/macos
deactivate

虛擬環(huán)境的好處

1.避免系統(tǒng)污染
2.隔離依賴環(huán)境
3.回避依賴沖突


環(huán)境配置文件requirements.txt用途

  1. 在使用python進(jìn)行項(xiàng)目開發(fā)的時(shí)候常常會(huì)調(diào)用許多包溯饵,而這些包又是在不停的更新中的
  2. 項(xiàng)目部署時(shí)侵俗,引用的眾多包需要全部引入才能正常運(yùn)行
  3. 當(dāng)前項(xiàng)目所需要的包的功能,在以后包的迭代中可能會(huì)被取代或者更新丰刊,從而導(dǎo)致在以后的某個(gè)時(shí)間重啟項(xiàng)目的時(shí)候無法運(yùn)行隘谣。所以記錄下當(dāng)項(xiàng)目所需要的包的類型以及版本是非常重要的,方便以后重啟項(xiàng)目的時(shí)候可以直接安裝啄巧。

用pip批量安裝包

  1. 這種方式是會(huì)在當(dāng)前路徑下生成一個(gè)requirements.txt文件寻歧,該文件中則會(huì)記錄當(dāng)前python環(huán)境下所以擁有的所有包,以及包的版本秩仆÷敕海可以看作把pip list這個(gè)命令展現(xiàn)的所有東西記錄下來。這種方式速度很快澄耍,
  2. requirements.txt文件包含的包是當(dāng)前環(huán)境所有的包噪珊,如果你當(dāng)前項(xiàng)目沒有用到的包也會(huì)被包括下來。

環(huán)境配置文件requirements.txt 使用方法

使用pip freeze命令生成requirements.txt文件

pip freeze > requirements.txt
image.png

每個(gè)包都獨(dú)占一行齐莲,然后是版本號(hào)痢站,生成的文件默認(rèn)在控制臺(tái)執(zhí)行目錄,也可以自定義目錄选酗,創(chuàng)建文件的時(shí)候增加文件目錄即可

pip freeze > d:/requirements.txt
  • 如遇到生成該文件出現(xiàn)的時(shí)候出現(xiàn) warning阵难,建議使用python -m去執(zhí)行 pip freeze 命令

遷移/部署初始化包

遷移環(huán)境的時(shí)候,注意打包該文件芒填,然后使用如下命令部署

pip install -r requirements.txt

# 如遇到不存在的版本包則會(huì)報(bào)錯(cuò)

使用 requirements.txt 文件的好處

  1. 不需要每個(gè)包都使用 pip 進(jìn)行安裝
  2. 不需要確定第三方模塊的版本號(hào)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呜叫,一起剝皮案震驚了整個(gè)濱河市空繁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌朱庆,老刑警劉巖盛泡,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異椎工,居然都是意外死亡饭于,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門维蒙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掰吕,“玉大人,你說我怎么就攤上這事颅痊≈呈欤” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵斑响,是天一觀的道長菱属。 經(jīng)常有香客問我,道長舰罚,這世上最難降的妖魔是什么纽门? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮营罢,結(jié)果婚禮上赏陵,老公的妹妹穿的比我還像新娘。我一直安慰自己饲漾,他們只是感情好蝙搔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著考传,像睡著了一般吃型。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僚楞,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天勤晚,我揣著相機(jī)與錄音,去河邊找鬼镜硕。 笑死运翼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兴枯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼矩欠,長吁一口氣:“原來是場噩夢啊……” “哼财剖!你這毒婦竟也來了悠夯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤躺坟,失蹤者是張志新(化名)和其女友劉穎沦补,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咪橙,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夕膀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了美侦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片产舞。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖菠剩,靈堂內(nèi)的尸體忽然破棺而出易猫,到底是詐尸還是另有隱情,我是刑警寧澤具壮,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布准颓,位于F島的核電站,受9級(jí)特大地震影響棺妓,放射性物質(zhì)發(fā)生泄漏攘已。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一怜跑、第九天 我趴在偏房一處隱蔽的房頂上張望样勃。 院中可真熱鬧,春花似錦妆艘、人聲如沸彤灶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幌陕。三九已至,卻和暖如春汽煮,著一層夾襖步出監(jiān)牢的瞬間搏熄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工暇赤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留心例,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓鞋囊,卻偏偏與公主長得像止后,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容