精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python中的依賴關(guān)系處理

開發(fā) 后端
對(duì)許多人來(lái)說(shuō),依賴關(guān)系是一場(chǎng)噩夢(mèng)。一些人甚至認(rèn)為它們是技術(shù)債務(wù)。管理你的軟件的庫(kù)列表是一種可怕的體驗(yàn)。自動(dòng)更新依賴項(xiàng)?-這聽起來(lái)像是在說(shuō)胡話。

對(duì)許多人來(lái)說(shuō),依賴關(guān)系是一場(chǎng)噩夢(mèng)。一些人甚至認(rèn)為它們是技術(shù)債務(wù)。管理你的軟件的庫(kù)列表是一種可怕的體驗(yàn)。自動(dòng)更新依賴項(xiàng)?-這聽起來(lái)像是在說(shuō)胡話。

[[277528]]

請(qǐng)繼續(xù)關(guān)注我,因?yàn)槲覍椭愀玫卣莆找恍┠阍趯?shí)踐中無(wú)法擺脫的東西——除非你非常富有和有才華,能夠在沒(méi)有他人代碼的情況下生活。

首先,我們需要清楚地了解一些有關(guān)依賴關(guān)系的知識(shí): 依賴關(guān)系有兩種類型。Donald Stuff幾年前寫的關(guān)于這個(gè)主題的文章比我要寫的都好。簡(jiǎn)單一點(diǎn)來(lái)說(shuō),它們是依賴于外部代碼的兩種類型的代碼包:應(yīng)用程序和庫(kù)。

庫(kù)依賴

Python庫(kù)應(yīng)該以一種通用的方式來(lái)指定它們的依賴關(guān)系。一個(gè)庫(kù)不應(yīng)該要求requests 2.1.5:這沒(méi)有意義。如果每個(gè)庫(kù)都需要不同版本的requests,我們就不能同時(shí)使用它們。

庫(kù)需要根據(jù)版本號(hào)的范圍來(lái)聲明依賴關(guān)系。要求請(qǐng)求requests>=2是正確的。如果你知道requests2.x不適用于該庫(kù),那么要求 requests>=1,<2 也是正確的。你的版本范圍定義正在解決的問(wèn)題是你的代碼和依賴項(xiàng)之間的API兼容性問(wèn)題———沒(méi)有其他問(wèn)題。這是庫(kù)盡可能使用語(yǔ)義版本控制的一個(gè)很好的理由。

因此,依賴關(guān)系應(yīng)該寫在setup.py中,類似于:

Python中的依賴關(guān)系處理

這樣,任何應(yīng)用程序都可以輕松地使用庫(kù)并與其他應(yīng)用程序共存。

應(yīng)用程序依賴關(guān)系

應(yīng)用程序只是庫(kù)的一種特殊情況。它們不打算被其他應(yīng)用程序庫(kù)重用(導(dǎo)入)——盡管在實(shí)踐中沒(méi)有什么可以阻止它。

最后,這意味著你應(yīng)該像為一個(gè)庫(kù)指定依賴關(guān)系一樣來(lái)在應(yīng)用程序的setup.py中指定依賴關(guān)系。

其主要區(qū)別在于,一個(gè)應(yīng)用程序通常部署在生產(chǎn)環(huán)境中以提供其服務(wù)。部署需要是可復(fù)用的。為此,你不能僅僅依賴于setup.py:因?yàn)檎?qǐng)求的依賴關(guān)系范圍太寬。在重新部署應(yīng)用程序時(shí),你希望隨時(shí)都可以隨意更改版本。

因此,你需要一個(gè)不同的版本管理機(jī)制來(lái)處理部署,而不僅僅是setup.py。

pipenv在其文檔中有一節(jié)很好地總結(jié)了這一點(diǎn)。它將依賴關(guān)系類型劃分為抽象依賴項(xiàng)和具體依賴項(xiàng): 抽象依賴項(xiàng)基于范圍(例如 庫(kù)),而具體依賴項(xiàng)是用精確的版本(例如應(yīng)用程序部署)指定的——正如我們?cè)谶@里看到的。

處理部署

requirements.txt文件長(zhǎng)期以來(lái)一直被用來(lái)解決應(yīng)用程序部署的可復(fù)用性問(wèn)題。它的格式通常是這樣的:

Python中的依賴關(guān)系處理

每個(gè)庫(kù)都將自己指定為微版本。這確保你的每個(gè)部署都將安裝相同版本的依賴項(xiàng)。使用requirements.txt是一個(gè)簡(jiǎn)單的解決方案,也是實(shí)現(xiàn)可復(fù)用部署的第一步。然而,這還不夠。

實(shí)際上,雖然你可以指定你想要的requests的版本,但是如果requests依賴于urllib3,那么這將會(huì)使pip安裝urllib 2.1或urllib 2.2。你無(wú)法知道哪一個(gè)會(huì)被安裝,這并不能使你的部署100%可重用。

當(dāng)然,你可以在你的requirements.txt中復(fù)制所有的requests依賴項(xiàng),但那將是瘋狂的做法!

[[277530]]

一個(gè)應(yīng)用程序依賴關(guān)系樹有時(shí)可能非常深入和復(fù)雜。

有各種各樣的技巧可以用來(lái)修復(fù)這個(gè)限制,但是真正的救星是pipenv和poetry。它們解決這個(gè)問(wèn)題的方法類似于其他編程語(yǔ)言中的許多包管理器。它們生成一個(gè)鎖文件,其中包含所有已安裝的依賴項(xiàng)(以及它們自己的依賴項(xiàng)等)的列表和版本號(hào)。這可以確保部署是100%可復(fù)用的。

請(qǐng)查看它們的文檔,了解如何設(shè)置和使用它們!

處理依賴項(xiàng)更新

現(xiàn)在,你已經(jīng)有了鎖文件,它可以確保你的部署在短時(shí)間內(nèi)是可復(fù)用的,那么你就有了另一個(gè)問(wèn)題。你如何確保你的依賴項(xiàng)是最新的?這是一個(gè)真正的安全問(wèn)題,而且保持版本落后的話,你可能也會(huì)錯(cuò)過(guò)bug修復(fù)和進(jìn)行優(yōu)化的機(jī)會(huì)。

如果你的項(xiàng)目托管在GitHub上,Dependabot是解決這個(gè)問(wèn)題的一個(gè)很好的解決方案。當(dāng)你的鎖文件中列出的庫(kù)的一個(gè)新版本可用時(shí),在存儲(chǔ)庫(kù)上啟用此應(yīng)用程序?qū)?huì)自動(dòng)創(chuàng)合并請(qǐng)求。例如,如果你已經(jīng)使用redis 3.3.6部署了你的應(yīng)用程序,當(dāng)新版本redis 3.3.7發(fā)布時(shí),Dependabot將會(huì)創(chuàng)建一個(gè)更新到redis 3.3.7的合并請(qǐng)求。此外,Dependabot還支持requirements.txt、 pipenv和poetry!

Python中的依賴關(guān)系處理

Dependabot正在為你更新jinja2

自動(dòng)部署更新

快要成功了。你有一個(gè)機(jī)器人,它讓你知道你的項(xiàng)目需要的一個(gè)庫(kù)的新版本是可用的。

一旦創(chuàng)建了合并請(qǐng)求,你的持續(xù)集成系統(tǒng)就會(huì)啟動(dòng)、部署你的項(xiàng)目并運(yùn)行測(cè)試。如果一切正常,你的合并請(qǐng)求就可以被合并了。但是在這個(gè)過(guò)程中真的需要你參與嗎?

除非你個(gè)人特別反感某個(gè)特定的版本號(hào)——“天哪,我討厭以3結(jié)尾的版本。遇見它總是運(yùn)氣不好。——或者除非你沒(méi)有自動(dòng)化測(cè)試,否則你,人類,是無(wú)用的。這個(gè)合并完全可以是自動(dòng)化的。

這就是Mergify發(fā)揮作用的地方。Mergify是一個(gè)GitHub應(yīng)用程序,它允許你定義關(guān)于如何合并合并請(qǐng)求的精確規(guī)則。下面是我在每個(gè)項(xiàng)目中都使用的一個(gè)規(guī)則:

Python中的依賴關(guān)系處理

當(dāng)規(guī)則完全匹配時(shí),Mergify會(huì)進(jìn)行報(bào)告。

一旦你的持續(xù)集成系統(tǒng)通過(guò),Mergify就會(huì)為你合并該合并請(qǐng)求。

Python中的依賴關(guān)系處理

然后,你就可以自動(dòng)觸發(fā)你的部署鉤子來(lái)更新你的生產(chǎn)部署,并立即安裝新的庫(kù)版本。這將使得你的應(yīng)用程序總是使用較新的庫(kù)進(jìn)行更新,并且不會(huì)落后于幾年的發(fā)行版。

如果出現(xiàn)任何錯(cuò)誤,你仍然能夠從Dependabot中恢復(fù)提交——如果你希望使用一個(gè)Mergify規(guī)則,你也可以自動(dòng)化恢復(fù)提交。

題外話

對(duì)我來(lái)說(shuō),這就是依賴關(guān)系管理生命周期目前的狀態(tài)。雖然這對(duì)Python非常適用,但它也可以應(yīng)用于使用了類似模式的許多其他語(yǔ)言,比如Node和npm。

責(zé)任編輯:華軒 來(lái)源: Python部落
相關(guān)推薦

2010-07-09 10:36:14

UML類圖關(guān)系

2010-07-08 14:58:29

UML類圖關(guān)系

2010-07-08 15:28:39

UML類圖依賴關(guān)系

2023-08-07 11:47:53

Poetry工具軟件包

2024-09-29 15:32:13

自動(dòng)化測(cè)試開發(fā)

2018-04-10 15:44:31

Gradle依賴關(guān)系異常

2010-06-29 13:11:40

UML類圖依賴關(guān)系

2024-04-15 07:00:00

Python開發(fā)Hatch

2021-03-16 09:23:25

VueMixin模塊

2024-01-11 16:02:38

OHOS依賴關(guān)系檢查編譯構(gòu)建系統(tǒng)

2010-06-29 12:55:44

UML類圖依賴關(guān)系

2022-12-29 08:54:53

依賴注入JavaScript

2025-10-30 01:55:00

2010-06-13 09:42:05

UML依賴

2010-06-12 15:21:19

UML關(guān)聯(lián)

2017-11-07 13:24:38

Pythontime模塊datetime

2010-08-09 14:01:22

關(guān)系法則

2009-06-04 10:34:19

Hibernate一對(duì)一對(duì)多關(guān)系配置

2010-06-13 09:18:28

UML依賴

2010-07-09 15:29:51

UML類關(guān)系
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品久久久久久综合日本欧美| 欧美午夜一区| 色拍拍在线精品视频8848| 精品一区二区久久久久久久网站| 国产成人综合欧美精品久久| 欧美日韩国产在线观看网站 | 成人在线视频一区二区| 91精品国产91久久久久久| 三上悠亚ssⅰn939无码播放 | 亚洲综合欧美综合| 欧州一区二区三区| 91国偷自产一区二区使用方法| 最新不卡av| 日本韩国免费观看| 久久精品国产99国产| 午夜精品久久久久久久99热| 国产精品理论在线| 成人影院中文字幕| 在线视频日韩| 一区二区三区在线视频免费观看 | 午夜日韩影院| 国产精品无遮挡| 国产乱码精品一区二区三区日韩精品| 日韩精品一区不卡| 国模 一区 二区 三区| 亚洲午夜色婷婷在线| 亚洲美女高潮久久久| 欧洲av一区二区| 亚洲国产另类av| 亚洲一区二三| 清纯唯美亚洲色图| 国产成人亚洲综合色影视| 国产精品mp4| 日本少妇做爰全过程毛片| 天天综合网91| 在线观看欧美www| 在线观看日韩精品视频| 欧美9999| 91精品国产91综合久久蜜臀| 国产视频一区二区三区在线播放| 草美女在线观看| 中文字幕字幕中文在线中不卡视频| 欧美一区二区三区电影在线观看 | 亚洲精品视频免费在线观看| 潘金莲一级淫片aaaaaaa| 亚洲国产伊人| 欧美日韩色综合| 国产精品入口免费软件| www.成人影院| 岛国av一区二区三区| 日韩一级性生活片| 成人影音在线| 亚欧色一区w666天堂| 日韩精品免费一区| 日本性爱视频在线观看| 亚洲精品国久久99热| 最新国产精品久久| 免费在线观看av网站| 欧美国产激情一区二区三区蜜月| 久久综合一区二区三区| 天天干视频在线观看| 菠萝蜜视频在线观看一区| 国产伦精品一区二区三区照片91| 午夜精品在线播放| 国产成人亚洲综合a∨婷婷图片| 亚洲伊人第一页| 国产绿帽刺激高潮对白| 国产美女在线观看一区| 97se亚洲综合| 秋霞av鲁丝片一区二区| 成人精品亚洲人成在线| 国产精品国产精品国产专区蜜臀ah| www.黄色片| 成人sese在线| 精品国产一区二区三区麻豆小说| 日韩资源在线| 国产欧美久久久精品影院| 五月天亚洲综合情| 国产网站在线免费观看| 一区二区成人在线| 青青青青草视频| 日韩脚交footjobhdboots| 色999日韩国产欧美一区二区| www.日日操| 日本久久久久| 精品国产不卡一区二区三区| 波多野结衣影院| 伊人久久大香线蕉av不卡| 一区二区欧美亚洲| 欧美 日韩 国产 一区二区三区| 国产精品分类| 日韩美女免费线视频| 一级黄色短视频| 国产v日产∨综合v精品视频| 精品午夜一区二区三区| 猫咪在线永久网站| 亚洲啪啪综合av一区二区三区| 成人免费性视频| 另类图片综合电影| 欧美一区二区三区啪啪| 一级国产黄色片| 日韩欧美高清在线播放| 欧美激情在线一区| 波多野结衣毛片| 国产福利一区二区三区视频| 欧美二区三区在线| 2024最新电影在线免费观看| 疯狂蹂躏欧美一区二区精品| 特级西西444www| 美女少妇全过程你懂的久久| 久久久99久久精品女同性| 国产超碰人人爽人人做人人爱| 蜜桃久久av一区| 国产日韩精品久久| 黄在线免费观看| 色综合天天做天天爱| 无码人妻一区二区三区在线视频| 亚洲婷婷伊人| 久久久久免费精品国产| 伊人精品一区二区三区| 91丨porny丨首页| 永久免费看av| 日本在线中文字幕一区二区三区| 亚洲大胆人体在线| 男女性高潮免费网站| 老司机精品视频网站| 国产激情美女久久久久久吹潮| av在线播放av| 在线精品视频一区二区三四| 免费黄色av网址| 伊人久久大香线蕉综合四虎小说 | 国产精品国产精品国产| 99麻豆久久久国产精品免费优播| 欧洲美女和动交zoz0z| 成人国产一区| 伊人伊成久久人综合网小说| 国产无套丰满白嫩对白| 99久久精品国产导航| h无码动漫在线观看| 欧美9999| 欧美老肥婆性猛交视频| 91丨porny丨在线中文 | 色欲一区二区三区精品a片| 久久亚洲精品伦理| 久久人人九九| 免费h在线看| 日韩电影免费观看在线观看| 黄网站免费在线| 成人一区二区三区| 拔插拔插海外华人免费| 国产精品115| 国语自产精品视频在线看| 性生活黄色大片| 亚洲午夜精品网| 一级黄色电影片| 亚洲国产二区| 免费国产一区| av亚洲一区二区三区| 亚洲日本欧美中文幕| jizz国产在线观看| 日本一区二区三区久久久久久久久不 | av无码一区二区三区| 亚洲电影在线| 久久福利电影| 电影亚洲精品噜噜在线观看| 国产一区二区三区丝袜 | 毛片在线网站| 亚洲小视频在线观看| 午夜视频网站在线观看| 国产精品麻豆网站| 91蝌蚪视频在线| 国产在线不卡| 久久青青草综合| 欧美日韩尤物久久| 不卡av在线网站| 高h调教冰块play男男双性文| 一区二区三区四区中文字幕| 中文字幕在线永久| 久久久久国产精品一区二区| 日韩一本精品| 欧美成人一级| 欧美在线免费视频| yourporn在线观看中文站| 在线播放国产精品二区一二区四区 | 国产99久久精品一区二区300| 国产精品黄色影片导航在线观看| 日本中文字幕在线观看| 精品欧美乱码久久久久久1区2区 | 亚洲专区一区二区三区| 天堂av一区二区| 99re91这里只有精品| 欧美性在线观看| 欧洲美女少妇精品| 亚洲高清不卡av| 中文字幕一区二区三区免费看| 中文字幕在线不卡视频| wwwxx日本| 捆绑紧缚一区二区三区视频| www.九色.com| av中文字幕一区二区| 国产精品v欧美精品v日韩| 日产精品一区| 欧美极品少妇全裸体| av资源网在线观看| 亚洲福利视频在线| 国产精品嫩草影院桃色| 都市激情亚洲色图| 日本一级特级毛片视频| 久久婷婷综合激情| www.欧美com| 美女网站一区二区| 欧美成人xxxxx| 欧美激情 亚洲a∨综合| 天堂资源在线亚洲视频| 欧美性极品少妇| 精品无码人妻一区二区三区| 国产日韩欧美制服另类| 日本一区二区在线观看视频| 老司机精品视频在线| 欧美日韩国产精品激情在线播放| 亚洲色图88| 小说区图片区图片区另类灬| 国产主播性色av福利精品一区| 国产精品一区二区在线| 在线天堂新版最新版在线8| 色综合视频一区中文字幕| av在线之家电影网站| 精品丝袜一区二区三区| 欧美 日韩 国产 在线| 日韩欧美一区中文| 夜夜嗨aⅴ一区二区三区| 欧美色图在线视频| 日本一级淫片免费放| 亚洲国产乱码最新视频| 极品颜值美女露脸啪啪| 亚洲同性gay激情无套| 免费黄在线观看| 久久―日本道色综合久久| 国产又粗又长又爽| 成人av资源网站| 制服丝袜在线第一页| 国内精品视频666| 高清av免费看| 麻豆91在线观看| 91亚洲精品久久久蜜桃借种| 蜜乳av一区二区三区| 超碰在线公开97| 国产在线精品一区二区不卡了| 中文字幕 91| 老色鬼精品视频在线观看播放| 亚洲综合欧美激情| 国模一区二区三区白浆| 亚洲一区二区三区四区精品| 国产风韵犹存在线视精品| 人妻少妇偷人精品久久久任期| 国产麻豆成人精品| 影音先锋资源av| 北条麻妃一区二区三区| 30一40一50老女人毛片| 久久精品视频网| 亚洲精品国产精品国自| 中文字幕在线观看不卡| 精品欧美一区二区久久久久| 亚洲一区中文日韩| 免费黄色网址在线| 欧美在线999| 国产伦理吴梦梦伦理| 日韩午夜激情av| 手机看片一区二区三区| 亚洲人在线观看| 黄色片免费在线观看| 欧美激情一区二区三区高清视频 | 国产精品av网站| 日本午夜免费一区二区| 国产富婆一区二区三区| 国产精品一线| 三区精品视频| 亚洲视频在线免费| 久久男人资源站| 久久成人一区| 超碰在线人人爱| 国产电影精品久久禁18| 六十路息与子猛烈交尾| 成人福利在线看| 91在线无精精品白丝| 国产精品剧情在线亚洲| 国产大片中文字幕在线观看| 天天操天天色综合| 天天干天天操天天操| 日韩欧美激情四射| 午夜福利视频一区二区| 一区二区三区在线播放欧美| 黄页网站在线| 国产99在线|中文| 精品176极品一区| 好吊色欧美一区二区三区视频| 欧美有码在线| 亚洲一区二区三区涩| 国产日韩免费| 高清欧美精品xxxxx| 亚洲欧美视频| 热久久久久久久久| gogo大胆日本视频一区| 日本理论中文字幕| 亚洲一级在线观看| 欧美成人精品网站| 欧美一级生活片| h视频网站在线观看| 欧美高清性猛交| 青青在线精品| 久久综合入口| 日韩在线视屏| 国产av人人夜夜澡人人爽麻豆| 蜜臀va亚洲va欧美va天堂| 亚洲精品成人无码毛片| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩成人免费观看| 欧美日韩成人激情| 日本高清中文字幕二区在线| 久久精品99久久久久久久久 | 午夜精品久久一牛影视| 中文字幕乱码视频| 亚洲欧美视频在线| heyzo中文字幕在线| 国产精品视频在线观看| 精品不卡一区| 久久免费视频3| 国内精品久久久久影院薰衣草| 日本黄色小视频在线观看| 亚洲第一在线综合网站| 成人av一区二区三区在线观看| 在线观看中文字幕亚洲| 91桃色在线观看| 国产91aaa| 亚洲精品a级片| 宅男噜噜噜66国产免费观看| 99久久免费国产| 免费中文字幕在线观看| 日韩一卡二卡三卡| 自拍视频在线播放| 欧美一级大片在线免费观看| 91蝌蚪精品视频| 免费看av软件| 精品亚洲aⅴ乱码一区二区三区| 欧美老熟妇乱大交xxxxx | 欧美h视频在线| 亚洲欧美不卡| 粉嫩av懂色av蜜臀av分享| 天天操天天色综合| 日本加勒比一区| 欧美成人免费小视频| 精品视频成人| 黄色免费高清视频| 国产成人综合亚洲网站| 男女做暖暖视频| 欧美人成免费网站| 国产人成网在线播放va免费| 成人美女免费网站视频| 午夜精品毛片| 亚洲最大综合网| 亚洲国产精品高清| 91尤物国产福利在线观看| 日韩在线视频线视频免费网站| 超级碰碰久久| 日韩久久在线| 日本系列欧美系列| 久久国产美女视频| 91精品国产一区二区三区香蕉 | 91免费国产视频网站| 欧美特级黄色片| 主播福利视频一区| 亚洲五码在线| 国产精品入口芒果| 国产亚洲精品福利| 国产男人搡女人免费视频| 国产一区二区三区视频| 国产精品毛片无码| 女人被男人躁得好爽免费视频 | 中文天堂资源在线| 欧美日韩www| ****av在线网毛片| 欧美精品在线一区| 国产精品一区二区在线看| 久久激情免费视频| 亚洲视频在线免费观看| 亚洲国产精选| 国产精品入口芒果| 国产精品乱码久久久久久 | 亚洲精品之草原avav久久| 欧美magnet| 欧美激情专区| 国产传媒久久文化传媒| 国产中文字幕视频| 美女性感视频久久久| 一本一道久久a久久| av五月天在线| 洋洋av久久久久久久一区| 深夜福利免费在线观看| 国产精品日韩专区| 欧美日韩精品免费观看视频完整|