精品欧美一区二区三区在线观看 _久久久久国色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)

男人的天堂亚洲在线| 国产一区久久久| 精品视频在线观看免费| 欧美一级视频在线观看| 韩国精品免费视频| 免费在线黄色电影| 成人午夜免费在线| 欧美一三区三区四区免费在线看| 天堂网av成人| 日韩精品1区2区| 麻豆av一区二区三区| 亚洲国产精品视频| 加勒比中文字幕精品| 欧美丰满艳妇bbwbbw| 国产主播在线一区| 国产精品久久久久久久岛一牛影视| 涩涩涩视频在线观看| 日本一区二区免费视频| 久久精品成人欧美大片古装| 久久中文在线| 在线免费黄色| 国产精品极品在线| 久久久亚洲欧洲日产国码αv| 亚洲妇女成熟| 91制片厂在线| 91gao视频| 亚洲韩国精品一区| 日韩精品中文字幕吗一区二区| www欧美com| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 午夜伦理福利在线| 久久久午夜精品福利内容| 欧美国产中文字幕| 99国产精品国产精品久久| 午夜久久中文| 国产成人免费在线观看视频| 亚洲在线视频福利| 亚洲第一综合色| 日韩啪啪网站| 国产又粗又猛又爽又黄91| 在线无限看免费粉色视频| 日韩一区二区三区在线视频| 日韩午夜电影| 黄色一级片在线观看| 捷克做爰xxxⅹ性视频| 4438全国成人免费| **欧美大码日韩| 奇米影视777在线欧美电影观看| 无码日韩精品一区二区| 韩国无码av片在线观看网站| 亚洲午夜未满十八勿入免费观看全集| 久久国产欧美日韩精品| 午夜成年人在线免费视频| 91激情视频在线观看| 丁香五月网久久综合| 欧美三日本三级三级在线播放| 国产精品大片免费观看| 国产盗摄在线观看| 中文字幕精品亚洲| 欧美日韩国产不卡在线看| 日韩欧美的一区| 国产精品18hdxxxⅹ在线| 免费污污视频在线观看| 91精品一区二区三区四区| 亚洲免费高清视频| 91麻豆国产精品久久| 国产精品久久久久av蜜臀| 中文字幕一区二区三区四区免费看 | 天天躁日日躁狠狠躁av| 宅男66日本亚洲欧美视频| 久久激情视频| 久草资源在线观看| 涩多多在线观看| 欧美激情图片区| 26uuu亚洲综合色| 日本亚洲欧洲无免费码在线| 日本三级黄色大片| 亚洲国产精品久久久久婷婷老年| 精品粉嫩aⅴ一区二区三区四区| 久久精品72免费观看| 日本久久二区| 91一区二区视频| 亚洲综合伊人久久| 亚洲专区在线视频| 欧美日韩国产bt| 国产麻豆午夜三级精品| 激情欧美一区二区三区黑长吊| 无码人妻精品一区二区三区9厂| 少妇av一区二区三区无码| 国产精品精品一区二区三区午夜版| 国产欧美一区二区精品性| 欧美在线免费| 亚洲丁香久久久| jvid福利在线一区二区| 欧美偷拍视频| 久草福利资源在线| 在线视频一二三区| 欧美日韩一级二级| 国产 日韩 欧美大片| 国产成人福利av| 欧美女子与性| 日韩福利在线视频| 九一免费在线观看| 欧美一级成年大片在线观看| 在线观看欧美黄色| 成人免费高清视频| 欧美韩日一区| 久久影视精品| 在线播放日本| 99久久国产免费| 91制片厂在线| 激情小说欧美色图| 天天操天天干天天玩| 91精品久久久久久久久不口人| 亚洲视频第一页| 欧美午夜精品一区二区三区| 中国色在线观看另类| 日本午夜一本久久久综合| 精品国产91| 国产人妖一区| 国产网红女主播精品视频| 99久久夜色精品国产亚洲| 1024手机在线观看你懂的| 麻豆tv在线播放| 国产精品毛片一区视频| 91爱爱小视频k| 在线播放精品一区二区三区| 在线亚洲一区观看| 国产精品一区二区男女羞羞无遮挡 | 久久久久久久久久影视| 国产在线无码精品| 亚洲精品欧美日韩专区| 九九精品视频在线| 亚洲成人在线视频播放| 一本大道久久精品懂色aⅴ| 91美女片黄在线| 日韩高清在线电影| 亚洲成av人片一区二区密柚| 国产一区2区在线观看| 123区在线| 成年人在线观看网站| 国产精品特级毛片一区二区三区| 波多野结衣欲乱| 欧美日韩一区二区区别是什么| 国产v片免费观看| 精品视频第一区| 91精品国产综合久久男男| 欧美激情在线观看| 最近2019中文字幕一页二页| 制服.丝袜.亚洲.中文.综合| 亚洲一级二级三级| 国产精品夫妻自拍| 久久精品欧美一区二区三区麻豆 | 在线成人高清不卡| 91国产丝袜在线播放| 亚洲国产精品视频| 一区在线观看视频| 久久久精品综合| 国产+成+人+亚洲欧洲自线| 日韩精品每日更新| 国产精品久久久久9999高清| 欧美成人午夜| 伊人久久大香线蕉精品组织观看| 国产精品欧美日韩一区| 日韩最新在线| 久久99国产精品久久99大师| 美国十次综合久久| 亚洲精品伊人| 成人影院入口| 中文字幕免费观看视频| 日韩三级小视频| 日本一区二区三区免费视频| 欧美高清视频一区二区三区| 欧美肥妇bbwbbw| 欧美人与性囗牲恔配| 欧美做受高潮中文字幕| 色噜噜狠狠一区二区| 亚洲一区精品视频在线观看| 在线免费观看视频黄| 伊人网在线综合| 久久精品一卡二卡| 日韩av手机在线播放| 国产精品密蕾丝袜| 日日操免费视频| 激情五月少妇a| 少妇太紧太爽又黄又硬又爽| 加勒比在线一区| 在线观看视频二区| www.国产麻豆| 国产综合在线观看| 免费网站看v片在线a| xxxx成人| 国产麻豆一区| 台湾亚洲精品一区二区tv| 色综合咪咪久久网| 亚洲久久一区二区| 国产自产高清不卡| 久久久久久久久99精品| 亚洲图片欧美色图| 欧美精品123区| 国产亚洲欧美aaaa| 欧美精品video| 国产精品久久久久久久av大片| 国产精品日韩在线一区| 成人av播放| 一道精品一区二区三区| 精品免费国产一区二区| 国产精品igao网网址不卡| xxxxx在线观看| 日韩av女优在线观看| 国产男女无套免费网站| 8888四色奇米在线观看| 久久爱91午夜羞羞| 国产伦理久久久久久妇女| 2023国产精品久久久精品双| 日韩av电影免费观看高清完整版| aaa国产一区| 亚洲成av人片一区二区三区| 欧美一区二区三区性视频| 日韩在线观看免费高清| 国产精品www色诱视频| 欧美资源一区| 男人的天堂最新网址| 免费看的黄色网| 久久久久久亚洲av无码专区| 精品电影在线| 成人免费一区| 一区二区三区在线电影| 日本成人在线一区| 中文字幕va一区二区三区| 91高清在线观看| 精品国产网站地址| www国产亚洲精品| 国产 福利 在线| 日本午夜精品视频| 高潮毛片7777777毛片| 精品极品在线| 91一区在线| 91小视频在线免费看| 在线观看一区二区精品视频| 久久视频在线视频| 粉嫩av四季av绯色av第一区| 无码无遮挡又大又爽又黄的视频| 蜜桃无码一区二区三区| 亚洲第一黄色片| 二区三区不卡| 国产精品国码视频| 国产日产精品一区| 欧美精品一区二区久久久| 国产视频观看一区| 国产91在线视频观看| 欧美大片xxxx| av午夜在线| 香蕉视频一区二区三区| 精品写真视频在线观看| 色偷偷久久人人79超碰人人澡| 欧美成人免费在线视频| 日韩欧美一区二区三区四区| 老鸭窝一区二区| 日本黄色三级视频| 亚州一区二区| 国产成人精品影视| 欧美一区二区三区不卡| 国产欧美精品在线| 成人在线观看a| 精品国产xxx| 手机看片久久| 免费在线观看视频一区| 色婷婷av一区| 日韩美女视频中文字幕| 粗暴91大变态调教| 久久国产视频一区| 日韩不卡视频在线观看| 久久成人18免费观看| 欧美精品一二三四| 国产在线高清精品| jjzz黄色片| 亚州精品国产精品乱码不99按摩| 欧美尿孔扩张虐视频| 91啪九色porn原创视频在线观看| 亚洲欧美激情在线视频| 亚洲精品一区二区三区樱花| 精品无码人妻一区| 美州a亚洲一视本频v色道| 亚洲最大在线| 中文字幕亚洲电影| 性色av一区二区三区免费| 免费日韩视频在线观看| 日本免费精品视频| 日韩免费精品| 久久日韩粉嫩一区二区三区| 日韩在线观看网站| 欧美一级欧美一级| 亚洲一区中文字幕永久在线| 亚洲一区二区三区四区电影| 国产亚洲一区二区三区在线观看| 久久激情视频免费观看| 大陆极品少妇内射aaaaa| 亚洲天堂自拍偷拍| 红杏aⅴ成人免费视频| 国产欧美一区二区精品久导航| 一个人看的www久久| 超碰10000| 国产视频手机在线观看| 红桃成人av在线播放| 偷拍与自拍一区| 古典武侠综合av第一页| 欧美色视频一区二区三区在线观看| 菠萝蜜视频在线观看www入口| 久草这里只有精品视频| 国产亚洲精品久久久久久牛牛| 国产aaa免费视频| 国产成人精品毛片| 国产精品不卡| 4438x成人网最大色成网站| 日韩精品久久一区二区三区| 国产成人精品片| 老牛精品亚洲成av人片| 亚洲午夜久久久久久久久电影院| 亚洲一区精品电影| 国产高潮流白浆| 国产一区二区三区免费观看在线 | 久久综合激情网| 青青青免费视频在线2| 欧美日韩一卡| 欧美不卡一区二区三区四区| 一二三四中文字幕| 性生活三级视频| 99在线精品免费视频九九视| 欧美va亚洲va在线观看蝴蝶网| 日本一道在线观看| 香港一级纯黄大片| 美女国产一区| 久久夜色精品国产| 国产精品入口麻豆| a欧美人片人妖| 国产精品麻豆欧美日韩ww| 91欧美日韩一区| 国产 欧美 日韩 在线| 国产aⅴ精品一区二区三区久久| 精品视频1区2区3区| 伊人久久在线观看| 亚洲欧美日韩综合在线| 久久国产麻豆精品| 97人人做人人爱| 日本午夜在线观看| 亚州综合一区| 精品久久国产老人久久综合| 中文字幕乱码人妻综合二区三区 | 亚洲永久免费视频| 欧美不卡1区2区3区| 国产剧情久久久| 日韩av在线播放中文字幕| 久久久久久久色| 懂色av懂色av粉嫩av| av成人男女| 在线成人av影院| 欧美成人三级在线播放| sm国产在线调教视频| 国产91丝袜在线18| 亚洲女人被黑人巨大进入al| 精品人妻一区二区免费| 91精品福利观看| 在线播放亚洲一区| 噼里啪啦国语在线观看免费版高清版| 久久久久黄久久免费漫画| 亚洲女性喷水在线观看一区| 午夜精品一区二区三区在线观看| 欧美日韩免费做爰大片| 国产一区二区三区黄视频| 国产精品免费电影| 中文字幕在线日亚洲9| 久久狠狠亚洲综合| 日本精品一区二区三区在线 | 日韩伦理在线一区| 91国偷自产一区二区三区成为亚洲经典| 97国产精东麻豆人妻电影 | 日本xxx在线播放| 九九在线精品| 亚洲精品按摩视频| 日韩中文字幕电影| 日韩一二三区在线观看| 欧美日韩精品一区视频| 手机在线国产视频| 欧美久久香蕉| 中文字幕日韩精品在线| jizz18女人高潮| 精品国产一区二区三区小蝌蚪| 久久精品小视频| 久久久久成人精品无码| 久久亚洲欧洲| 国产成人免费电影| 岛国最新视频免费在线观看| 一区二区三区四区视频精品免费 | 一本一道综合狠狠老| 中文字幕第22页| 6080成人| 久久久999精品| 欧美一区二区三区网站| 久久不射中文字幕|