欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 軟件研發 > NPM作為Python項目的構建工具

NPM作為Python項目的構建工具

2020-10-14 17:21:38 | 來源:中培企業IT培訓網

Python是一種功能強大的語言,個人比較喜歡python。但是一直覺得python缺少了一些東西。就像你從來沒有約會過的漂亮女孩。與使用帶有npm的NodeJ的項目相比,為中型到大型Python項目設置工作環境確實非常困難,接下來讓我們來探討幾種可以使用npm幫助python解決此問題的方法。

  1.執行腳本

每個NodeJs項目都有一個package.json文件。您可以在一個文件中定義從版本到依賴關系,腳本到自定義配置的所有內容。運行腳本非常簡單,

npm運行<腳本名稱>

與Python相比有什么不同?

python中用于設置項目的一個標準選項是setuptools軟件包?;镜脑獢祿渲茫ɡ缑Q,版本和作者)很簡單。它還提供了許多復雜的選項,例如cmdclass和scripts。但是,即使是簡單的操作(例如刪除一些自動生成的文件)也相當困難。

例如,假設您需要coverage/在運行測試套件后刪除目錄中的所有文件。在python中,如果要自動執行此任務,則需要做幾件事。

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

2). 編寫一個新的Python類擴展distutils.command基類

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

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

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

"test": "python setup.py測試",

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

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

"test": "python setup.py測試",

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

另一方面,我對將一些構建命令集成到項目的源代碼感到不舒服。

  2.配置git hooks

我個人認為pre-commit和pre-push git鉤子是git存儲庫的重要元素。這些是無名英雄,可以避免對存儲庫的意外提交,從而有助于使用干凈的提交維護干凈的存儲庫。

在我正在從事的項目中,我們計劃有與以下檢查相對應的掛鉤。

1). 運行pylint檢查并評估目標文件的pylint分數;

2). 運行pytest并確保所有測試都通過;

3). 避免承諾掌握和發展分支機構;

4). 確保沒有禁止的單詞;

5). 創建源發行版,并確保沒有構建錯誤。

只有5個,還有更多支票。顯然,手動運行這些檢查不是一種選擇。所以我需要配置鉤子。

我發現了幾個pip包,包括git-pylint-hook,git-pre-push-hook和pre-commit,它們似乎可以滿足我的要求。但是我找不到的任何庫都沒有適當的文檔。自定義插件似乎是一場噩夢。

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

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

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

“ pre-push”:[

“ git-branch”,

“ forbidden-words”,

“ pylint”,

“ test”,

“ build”

]

現在,這很容易吧。我還要在這里強調pre和post腳本也可以在這里工作。但是,對于我們的項目,我們希望明確指定檢查。

3.觀看模式

為了解釋為什么需要此功能,我首先要提到我使用intelliJ PyCharm作為編寫Python代碼的IDE。我希望在不久的將來看到pycharm中缺少的一項功能,它是有關IDE中pylint問題的實時反饋。

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

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

例如,我們可以有一個如下所示的條目,以便在每次.py更改時運行pylint 。

“ watch”:{

“ pylint”:{

“ patterns”:[

“ app / ** / *”,

“ utils / ** / *”

],

“ extensions”:“ py”,

“ quiet”:true

}

}}

  最后的想法

盡管我真的很喜歡package.json在python項目倉庫中有一個文件,但是我收到了這種方法的混合反饋。一些開發人員對此不以為然,認為這種方法不是python。

我個人沒有發現不是python的問題,因為我認為工程師應該與技術無關,所有這些語言僅僅是完成某些工作的工具。盡管如此,為了尊重所有隊友的需求,我在不使用npm的情況下配置了此倉庫中提到的所有基本內容。想了解更多關于python的問題,請繼續關注中培偉業。

標簽: Python 軟件研發
主站蜘蛛池模板: 每日更新在线观看AV_手机 | A∨无码天堂AV | 99久热re在线精品99re8热视频 | 亚洲AV影院男人的天堂 | 吉林小伟无套gay | 天天爱天天做天天添天天欢 | 国产精品女A片爽爽免费按摩 | 高潮插的我好爽再干噢在线欢看 | 99vv1com这只有精品 | 久久综合色一综合色88欧美 | 中文字幕人妻无码一夲道 | 少妇p毛又多水又大又黑 | 欧美精品国产制服第一页 | 人妻丝袜无码专区视频网站 | 67PAO国产成视频永久免费 | 亚洲精品一卡2卡3卡四卡乱码 | 中文字幕日韩欧美一区二区三区 | 欧美熟妇大胆bbww | 精品高朝久久久久9999 | 无码AV中文一区二区三区桃花岛 | 韩产日产国产欧产 | CAOPORN国产精品免费视频 | 色情WWW成人片WWW222 | 久久婷婷五月综合色国产 | 亚洲爆乳精品无码一区二区 | 国产成人精品午夜二三区波多野 | 鲁一鲁AV2019在线 | 精品人妻无码一区二区三区手机板 | 波多资源在线中文字幕 | 成人无码区免费a片视频 | 日韩精品无码一区二区三区不卡 | 欧美午夜成人精品视频 | 欧洲av免费看 | 3344成人免费高清免费视频 | 色与欲影视天天看综合网 | 久久青青草原国产精品最新片 | 高潮岳喷我一脸 | 亚洲VA999成人A片在线观看 | 久久亚洲色WWW成人图片 | 啊灬啊灬啊灬快灬高潮少妇a片 | 国产偷窥真人视频在线观看 |