欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python開發(fā)生產(chǎn)環(huán)境常用的4個工具(實(shí)用推薦)

 更新時(shí)間:2024年01月23日 14:33:02   作者:簡訊Alfred?愛生活愛扣釘  
構(gòu)建優(yōu)秀的軟件需要遵循特定的規(guī)則并執(zhí)行行業(yè)標(biāo)準(zhǔn),如何在真實(shí)的生產(chǎn)環(huán)境開發(fā)中體現(xiàn)呢?在這篇文章中,我將向您展示我在Python項(xiàng)目中設(shè)置的4種工具,以簡化開發(fā)工作流程并執(zhí)行一些最佳實(shí)踐,這些工具幫助我提高了效率,節(jié)省了時(shí)間,希望你讀完也能有所收獲

Poetry

在啟動一個新項(xiàng)目時(shí),我通常會使用 Poetry 來管理依賴關(guān)系,并創(chuàng)建一個全新的虛擬環(huán)境。這在不同項(xiàng)目依賴同一軟件包的不同版本時(shí)非常有用。

Poetry 是一款出色的工具,因?yàn)樗芸焖俳鉀Q依賴關(guān)系問題。通過友好的 CLI,它還易于使用,并有助于快速打包和發(fā)布代碼。

我們輸入 poetry init 來啟動一個新項(xiàng)目。

輸入 "yes" 后,就會創(chuàng)建一個包含項(xiàng)目元數(shù)據(jù)的 pyproject.toml 文件。該文件可以提交到 Git,并與同事共享,以重現(xiàn)相同的環(huán)境。項(xiàng)目設(shè)置完成后,就可以使用 add 命令添加依賴關(guān)系了。

示例:poetry add pandas

您還可以對依賴項(xiàng)進(jìn)行分組。

例如,您可以將 black 和 isort 作為開發(fā)依賴項(xiàng)添加到 dev 組。

示例:poetry add black --group dev

如果我們再次查看 pyproject.toml 文件,就會發(fā)現(xiàn)其中有兩個獨(dú)立的依賴關(guān)系部分:

這有什么用?

有了群組,你就可以輕松管理每個環(huán)境的依賴關(guān)系。例如,如果您有開發(fā)和測試依賴項(xiàng),您可能希望在生產(chǎn)環(huán)境中安裝項(xiàng)目庫時(shí)忽略它們。

你可以這樣使用它:

poetry install --without dev,test

這些依賴項(xiàng)安裝在哪里?

Poetry 為每個項(xiàng)目創(chuàng)建一個虛擬環(huán)境。它位于一個隱藏的 .venv 文件夾中。你可以使用 poetry shell 命令激活它,并訪問其特定的二進(jìn)制文件(pythonpip、black 等)。

Pre-commit hooks

作為一名 Python 開發(fā)人員,您可能會經(jīng)常遇到這樣的情況:您的團(tuán)隊(duì)成員擁有不同的編碼風(fēng)格,會讓代碼難以閱讀,導(dǎo)致工作效率的降低,并使協(xié)作變得困難。pre-commit 就是用來解決這個問題的。

pre-commit 是在每次提交前自動運(yùn)行的腳本,用于檢查代碼是否存在錯誤。這些 hooks 與語言無關(guān),有助于在提交到版本庫之前發(fā)現(xiàn)問題,確保只提交高質(zhì)量的代碼。

我通常會在 pre-commit 中添加這些腳本:

• black - 用于格式化代碼

• pydoctyle - 確保代碼文檔符合 Google 標(biāo)準(zhǔn)

• pycln - 刪除未使用的導(dǎo)入

• trailing-whitespace - 刪除多余的空格

• unitest - 運(yùn)行單元測試并發(fā)現(xiàn)破壞性修改

要配置這些 pre-commit,首先需要安裝 pre-commit 軟件包。

# pip 安裝
pip install pre-commit

# poetry 安裝
poetry add pre-commit

然后,你需要在名為 .pre-commit-configuration.yaml 的 YAML 文件中定義 hooks。

下面是我通常使用的文件:

repos:
-   repo: https://github.com/psf/black
    rev: '23.1.0'
    hooks:
    -   id: black
        args: [--config=pyproject.toml]

-   repo: https://github.com/pycqa/pydocstyle
    rev: '6.3.0'
    hooks:
    -   id: pydocstyle
        args: ['.']

-   repo: https://github.com/hadialqattan/pycln
    rev: 'v2.1.5'
    hooks:
    -   id: pycln
        args: ['.']

-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: 'v4.4.0'
    hooks:
    -   id: trailing-whitespace

-   repo: local
    hooks:
    -   id: unittest
        name: run unit tests
        language: system
        pass_filenames: false
        entry: poetry run coverage run -m pytest

現(xiàn)在,您需要使用 install 命令安裝這些 hooks:

pre-commit install

可以開始了,讓我們試試這個。如果您嘗試提交文檔缺失的代碼,您將會收到這樣的錯誤信息,并且什么都不會提交到 git。

這將迫使你修復(fù)代碼并再次提交。

Makefiles

Makefile 將一系列 shell 命令組合在一個快捷方式。我們來看一個例子。想象一下,每次更新代碼時(shí)都要運(yùn)行以下單元測試命令:

poetry run coverage run -m pytest
poetry run coverage report
poetry run coverage html

這些乏味且重復(fù)的工作完全可以使用 Makefile,將這三個命令集中到一個測試目標(biāo)下。

現(xiàn)在,不用再鍵入這三行,只需運(yùn)行:make test。這樣就避免了不必要的代碼鍵入或記憶復(fù)雜的指令。Makefile 還有助于簡化其他任務(wù),例如:

• 安裝依賴項(xiàng)

• 設(shè)置環(huán)境變量

• 運(yùn)行腳本

• 構(gòu)建和推送 Docker 映像

• 構(gòu)建文檔

• 設(shè)計(jì)代碼風(fēng)格

下面是我在一個開源項(xiàng)目中使用的 Makefile 實(shí)例:

DOCKER_IMAGE := ahmedbesbes/cowriter
VERSION := $(shell git describe --always --dirty --long)
ifneq (,$(wildcard ./.env))
    include .env
    export
endif
run-cowriter: 
 @poetry run python -m src.main
run-cowriter-job: 
 @poetry run python -m src.job
run-web-agent: 
 @rm -rf db/ && poetry run python -m src.actions.web_searcher 
build-image:
 @docker build . -t $(DOCKER_IMAGE):$(VERSION)
push-docker-image-to-artifact-registry:
 @gcloud builds submit --tag gcr.io/$(PROJECT_ID)/run_cowriter_job
lint:
 @poetry run black .
test: 
 @poetry run coverage run -m pytest
 @poetry run coverage report
 @poetry run coverage html

Makefile 通常易于閱讀和理解,可以清楚地說明項(xiàng)目的不同部分是如何組織的,以及它們是如何相互依賴的。這對團(tuán)隊(duì)新成員的入職培訓(xùn)或一段時(shí)間后重新審視自己的項(xiàng)目特別有幫助。

python-dotenv

作為一名 Python 開發(fā)人員,常常會涉及到敏感信息和一些憑證(例如 auth 或者 token),下面是一些例子:

• 訪問第三方服務(wù)的 API 密鑰

• 密碼和憑證

• 域名或 URL

記住,絕不應(yīng)在腳本中硬編碼版本化這些憑據(jù)。因?yàn)闀?dǎo)致許多不安全的因素。一種安全且良好的做法是將它們加載為環(huán)境變量。

import os

api_key = os.environ.get("API_KEY")

為了避免每次都使用 shell 命令導(dǎo)出環(huán)境變量,可以使用 Python 的 dotenv 軟件包:

1. pip install python-dotenv

2. 創(chuàng)建一個 .env 文件,其中包含鍵值對中的憑據(jù)

3. 將 .env 添加到 .gitignore 以防止 Git 提交它

4. 使用 python-dotenv 模塊將設(shè)置加載到 Python 文件中

希望這些技巧對你更好地構(gòu)建 Python 項(xiàng)目和自動化繁瑣的任務(wù)有所幫助。記得收藏,并反復(fù)閱讀。

以上就是Python開發(fā)生產(chǎn)環(huán)境常用的4個工具(實(shí)用推薦)的詳細(xì)內(nèi)容,更多關(guān)于Python開發(fā)生產(chǎn)環(huán)境工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python獲取網(wǎng)絡(luò)時(shí)間戳的兩種方法詳解

    Python獲取網(wǎng)絡(luò)時(shí)間戳的兩種方法詳解

    在我們進(jìn)行注冊碼的有效期驗(yàn)證時(shí),通常使用獲取網(wǎng)絡(luò)時(shí)間的方式來進(jìn)行比對。本文將介紹兩種利用Python獲取網(wǎng)絡(luò)時(shí)間戳的方法,感興趣的可以了解一下
    2022-01-01
  • python smtplib模塊自動收發(fā)郵件功能(二)

    python smtplib模塊自動收發(fā)郵件功能(二)

    這篇文章主要為大家詳細(xì)介紹了python smtplib模塊自動收發(fā)郵件功能的第二篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python 循環(huán)while和for in簡單實(shí)例

    python 循環(huán)while和for in簡單實(shí)例

    下面小編就為大家?guī)硪黄猵ython 循環(huán)while和for in簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Matlab之使用HeatMap實(shí)現(xiàn)畫熱圖

    Matlab之使用HeatMap實(shí)現(xiàn)畫熱圖

    這篇文章主要介紹了Matlab之使用HeatMap實(shí)現(xiàn)畫熱圖方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Pandas篩選DataFrame含有空值的數(shù)據(jù)行的實(shí)現(xiàn)

    Pandas篩選DataFrame含有空值的數(shù)據(jù)行的實(shí)現(xiàn)

    本文主要介紹了Pandas篩選DataFrame含有空值的數(shù)據(jù)行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • python庫matplotlib繪制坐標(biāo)圖

    python庫matplotlib繪制坐標(biāo)圖

    這篇文章主要為大家介紹了python庫matplotlib繪制坐標(biāo)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • python中altair可視化庫實(shí)例用法

    python中altair可視化庫實(shí)例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中altair可視化庫實(shí)例用法,對此有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • python實(shí)現(xiàn)微信自動回復(fù)機(jī)器人功能

    python實(shí)現(xiàn)微信自動回復(fù)機(jī)器人功能

    wxpy基于itchat,使用了 Web 微信的通訊協(xié)議,通過大量接口優(yōu)化提升了模塊的易用性,并進(jìn)行豐富的功能擴(kuò)展。這篇文章主要介紹了python實(shí)現(xiàn)微信自動回復(fù)機(jī)器人功能,需要的朋友可以參考下
    2019-07-07
  • python求眾數(shù)問題實(shí)例

    python求眾數(shù)問題實(shí)例

    這篇文章主要介紹了python求眾數(shù)問題實(shí)例,包括文件的讀寫、字典的運(yùn)用及數(shù)值的計(jì)算等技巧,需要的朋友可以參考下
    2014-09-09
  • Pandas?DataFrame列快速轉(zhuǎn)換為列表(3秒學(xué)會!)

    Pandas?DataFrame列快速轉(zhuǎn)換為列表(3秒學(xué)會!)

    這篇文章主要給大家介紹了關(guān)于Pandas?DataFrame列如何快速轉(zhuǎn)換為列表的相關(guān)資料,在Python的pandas庫中可以使用DataFrame的tolist()方法將DataFrame轉(zhuǎn)化為列表,需要的朋友可以參考下
    2023-10-10

最新評論