无码人妻A片一区二区三区_18禁裸乳无遮挡啪啪无码免费_91精品亚?影视在线?看_人人妻人人爽人人澡AV_国产精品人妻一区二区三区四区_午夜免费影视

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁(yè) > IT資訊 > 軟件研發(fā) > NPM作為Python項(xiàng)目的構(gòu)建工具

NPM作為Python項(xiàng)目的構(gòu)建工具

2020-10-14 17:21:38 | 來(lái)源:中培企業(yè)IT培訓(xùn)網(wǎng)

Python是一種功能強(qiáng)大的語(yǔ)言,個(gè)人比較喜歡python。但是一直覺得python缺少了一些東西。就像你從來(lái)沒(méi)有約會(huì)過(guò)的漂亮女孩。與使用帶有npm的NodeJ的項(xiàng)目相比,為中型到大型Python項(xiàng)目設(shè)置工作環(huán)境確實(shí)非常困難,接下來(lái)讓我們來(lái)探討幾種可以使用npm幫助python解決此問(wèn)題的方法。

  1.執(zhí)行腳本

每個(gè)NodeJs項(xiàng)目都有一個(gè)package.json文件。您可以在一個(gè)文件中定義從版本到依賴關(guān)系,腳本到自定義配置的所有內(nèi)容。運(yùn)行腳本非常簡(jiǎn)單,

npm運(yùn)行<腳本名稱>

與Python相比有什么不同?

python中用于設(shè)置項(xiàng)目的一個(gè)標(biāo)準(zhǔn)選項(xiàng)是setuptools軟件包。基本的元數(shù)據(jù)配置(例如名稱,版本和作者)很簡(jiǎn)單。它還提供了許多復(fù)雜的選項(xiàng),例如cmdclass和scripts。但是,即使是簡(jiǎn)單的操作(例如刪除一些自動(dòng)生成的文件)也相當(dāng)困難。

例如,假設(shè)您需要coverage/在運(yùn)行測(cè)試套件后刪除目錄中的所有文件。在python中,如果要自動(dòng)執(zhí)行此任務(wù),則需要做幾件事。

1). cmdclass在setup.py(setuptools正在使用的地方)下添加一個(gè)條目

2). 編寫一個(gè)新的Python類擴(kuò)展distutils.command基類

3). 編寫一個(gè)python代碼,該代碼將用于subprocess.Popen執(zhí)行所需的命令。

"clean_cov": "rm -rf coverage/*"與在package.json文件中添加一行條目相比,這需要大量的工作。這里的另一個(gè)好處是,您可以鏈接npm命令來(lái)耦合任務(wù)。

"clean_cov": "rm -rf coverage/*",

"test": "python setup.py測(cè)試",

"test_and_clean": "npm run test && npm run clean_cov"

您還可以添加pre和post腳本來(lái)定義流程。上面的代碼可以寫成

"test": "python setup.py測(cè)試",

"posttest": "rm -rf coverage/*",

另一方面,我對(duì)將一些構(gòu)建命令集成到項(xiàng)目的源代碼感到不舒服。

  2.配置git hooks

我個(gè)人認(rèn)為pre-commit和pre-push git鉤子是git存儲(chǔ)庫(kù)的重要元素。這些是無(wú)名英雄,可以避免對(duì)存儲(chǔ)庫(kù)的意外提交,從而有助于使用干凈的提交維護(hù)干凈的存儲(chǔ)庫(kù)。

在我正在從事的項(xiàng)目中,我們計(jì)劃有與以下檢查相對(duì)應(yīng)的掛鉤。

1). 運(yùn)行pylint檢查并評(píng)估目標(biāo)文件的pylint分?jǐn)?shù);

2). 運(yùn)行pytest并確保所有測(cè)試都通過(guò);

3). 避免承諾掌握和發(fā)展分支機(jī)構(gòu);

4). 確保沒(méi)有禁止的單詞;

5). 創(chuàng)建源發(fā)行版,并確保沒(méi)有構(gòu)建錯(cuò)誤。

只有5個(gè),還有更多支票。顯然,手動(dòng)運(yùn)行這些檢查不是一種選擇。所以我需要配置鉤子。

我發(fā)現(xiàn)了幾個(gè)pip包,包括git-pylint-hook,git-pre-push-hook和pre-commit,它們似乎可以滿足我的要求。但是我找不到的任何庫(kù)都沒(méi)有適當(dāng)?shù)奈臋n。自定義插件似乎是一場(chǎng)噩夢(mèng)。

我甚至覺得手動(dòng)編寫一些shell腳本比找到合適的python插件容易。

現(xiàn)在,讓我們看看如何在package.json文件存在的情況下完成此操作。

我找到了這些用于工作的預(yù)提交和預(yù)推送庫(kù)。由于我已經(jīng)在程序包中包含用于運(yùn)行上述檢查的自定義腳本,因此我要做的就是安裝庫(kù)并將相關(guān)條目添加到package.json文件中。例如,我將預(yù)推掛鉤配置如下,

“ pre-push”:[

“ git-branch”,

“ forbidden-words”,

“ pylint”,

“ test”,

“ build”

]

現(xiàn)在,這很容易吧。我還要在這里強(qiáng)調(diào)pre和post腳本也可以在這里工作。但是,對(duì)于我們的項(xiàng)目,我們希望明確指定檢查。

3.觀看模式

為了解釋為什么需要此功能,我首先要提到我使用intelliJ PyCharm作為編寫Python代碼的IDE。我希望在不久的將來(lái)看到pycharm中缺少的一項(xiàng)功能,它是有關(guān)IDE中pylint問(wèn)題的實(shí)時(shí)反饋。

在他們將該功能添加到pycharm中之前,我最好的選擇是將pylint配置為外部插件,并在更新python文件之前手動(dòng)運(yùn)行它。

但是,有了我的救主的幫助package.json,這變得容易了。在NPM-手表庫(kù)(和其他類似的庫(kù))為我們提供了觀看在給定的目錄中的特定文件類型更改,然后執(zhí)行一個(gè)腳本NPM的選擇。

例如,我們可以有一個(gè)如下所示的條目,以便在每次.py更改時(shí)運(yùn)行pylint 。

“ watch”:{

“ pylint”:{

“ patterns”:[

“ app / ** / *”,

“ utils / ** / *”

],

“ extensions”:“ py”,

“ quiet”:true

}

}}

  最后的想法

盡管我真的很喜歡package.json在python項(xiàng)目倉(cāng)庫(kù)中有一個(gè)文件,但是我收到了這種方法的混合反饋。一些開發(fā)人員對(duì)此不以為然,認(rèn)為這種方法不是python。

我個(gè)人沒(méi)有發(fā)現(xiàn)不是python的問(wèn)題,因?yàn)槲艺J(rèn)為工程師應(yīng)該與技術(shù)無(wú)關(guān),所有這些語(yǔ)言僅僅是完成某些工作的工具。盡管如此,為了尊重所有隊(duì)友的需求,我在不使用npm的情況下配置了此倉(cāng)庫(kù)中提到的所有基本內(nèi)容。想了解更多關(guān)于python的問(wèn)題,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。

標(biāo)簽: Python 軟件研發(fā)
主站蜘蛛池模板: 国产亚洲精品久久久网站好莱 | 日本午夜免费福利视频 | 可以直接在线观看的av | 国产精品国产三级国产av′ | 经典老熟女ass | 91亚洲精品中文字幕 | 福利社毛片 | 国产成人Av乱码免费观看 | 中文字幕免费在线视频 | 99在线99| 日韩国产在线播放 | www.久久亚洲 | 999成人在线 | 一区二区在线不卡视频 | 91精品国产综合久久久久久 | 蜜桃视频在线视频 | 在线中文字幕-区二区三区四区 | 欧美中日韩在线 | 飘雪影院免费版在线观看视频 | 青青草激情 | 强行肉体进入hdxxxx办公室 | 久久久精品久久久 | 欧美群交射精内射颜射潮喷 | 草的我好爽视频 | 亚洲在线视频观看 | 妇欲欢公爽公妇精品一区 | 国产高清视频一区二区 | 天天爱天天做天天做天天吃中文 | 人人妻人人爽人人做夜欢视频九色 | 一级做a爰全过程免费视频毛片 | www啦啦啦视频在线观看免费 | 午夜精品亚洲一区二区三区嫩草 | 青青av| 国产黄a三级一国产小仙女视频 | 性亚洲videofree高清极品 | 人妻无码AV一区二区三区精品 | 国产免费观看一区 | 艳妇荡乳豪妇荡乳av精东 | 亚洲精品不卡无码福利在线观看 | 日本黄色网页 | 精品不卡一区 |