日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
四個(gè)工具幫你輕松將python項(xiàng)目發(fā)布到生產(chǎn)環(huán)境

構(gòu)建良好的軟件遵循特定規(guī)則并強(qiáng)制執(zhí)行行業(yè)標(biāo)準(zhǔn),同時(shí)需要考慮:依賴關(guān)系、代碼質(zhì)量、工作流程、憑據(jù)。但這些如何反映在現(xiàn)實(shí)代碼庫中呢?在這篇文章中,我將向您展示我在Python項(xiàng)目中設(shè)置的4個(gè)工具,以便簡化開發(fā)工作流程并強(qiáng)制執(zhí)行一些優(yōu)秀實(shí)踐。

1. Poetry

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

Poetry是一個(gè)很好的工具,因?yàn)樗诮馕鲆蕾囮P(guān)系方面速度很快。它還通過用戶友好的CLI易于使用,并有助于快速打包和分發(fā)您的代碼。

以下是如何使用Poetry啟動新項(xiàng)目的方法:

poetry init

一旦你按下yes,就會創(chuàng)建一個(gè)pyproject.toml文件,用于包含項(xiàng)目的 metadata。這個(gè)文件可以提交到Git,并與您的同事共享,以重現(xiàn)相同的環(huán)境。項(xiàng)目設(shè)置完成后,您可以使用add命令添加依賴項(xiàng)。示例:

poetry add pandas

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

poetry add black --group dev

如果再次查看pyproject.toml文件,我們將注意到依賴項(xiàng)的兩個(gè)單獨(dú)部分:

為什么這有用呢?

分組使您能夠輕松管理不同環(huán)境的依賴關(guān)系。例如,如果您有開發(fā)和測試依賴項(xiàng),您可能希望在生產(chǎn)設(shè)置中安裝項(xiàng)目庫時(shí)忽略它們。這是如何做到的:

poetry install --without dev,test

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

Poetry為每個(gè)項(xiàng)目創(chuàng)建一個(gè)虛擬環(huán)境。它位于隱藏的.venv文件夾中。您可以使用poetry shell命令激活它,并訪問其特定的二進(jìn)制文件(python、pip、black等)。更多功能可以查看官方文檔以了解更多信息。

2. Pre-commit hooks

如果您是Python開發(fā)人員,您可能經(jīng)常會遇到這樣的情況:您的團(tuán)隊(duì)成員具有不同的編碼風(fēng)格,這使得代碼庫不一致。結(jié)果,這導(dǎo)致錯(cuò)誤,降低了生產(chǎn)力,并使協(xié)作困難。pre-commit hooks就可以解決這個(gè)問題,它在每次提交之前自動運(yùn)行的腳本,用于檢查您的代碼是否存在錯(cuò)誤。

在我的項(xiàng)目中,我通常會在我的預(yù)提交配置中添加這些腳本:

  • black — 用于格式化代碼
  • pydoctyle — 確保代碼文檔符合Google的標(biāo)準(zhǔn)
  • pycln — 用于刪除未使用的導(dǎo)入
  • trailing-whitespace — 用于刪除額外的空格
  • unitest — 用于運(yùn)行單元測試和檢測破壞性更改

要配置這些首先需要安裝pre-commit包:

pip install pre-commit
或者
poetry add pre-commit

然后,您需要在名為.pre-commit-configuration.yaml的YAML文件中進(jìn)行定義。以下是我通常使用的一個(gè):

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 命令進(jìn)行安裝:

pre-commit install

另外,如果您嘗試提交沒有文檔的代碼,您將收到此錯(cuò)誤,不會提交任何內(nèi)容到git。

這將迫使您修復(fù)代碼,然后再次提交。

3. Makefiles

Makefile將一系列shell命令分組在一個(gè)快捷方式(也稱為目標(biāo))下。想象一下,每次更新代碼時(shí)都必須運(yùn)行以下單元測試命令:

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

那不是很繁瑣嗎?使用Makefile,您可以將這三個(gè)命令分組在一個(gè) test 目標(biāo)下?,F(xiàn)在,您只需運(yùn)行make test,而不是輸入這三行,這避免了不必要的代碼輸入或記住復(fù)雜的指令。

Makefile還有助于簡化其他任務(wù),如:

  • 安裝依賴項(xiàng)
  • 設(shè)置環(huán)境變量
  • 運(yùn)行腳本
  • 構(gòu)建和推送Docker鏡像
  • 構(gòu)建文檔
  • 為代碼添加樣式

以下是我在我的一個(gè)開源項(xiàng)目中使用的Makefile示例:

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

Makefiles通常易于閱讀和理解,清晰地顯示了項(xiàng)目的不同部分是如何組織的,以及它們?nèi)绾蜗嗷ヒ蕾嚒_@對于新團(tuán)隊(duì)成員入職或一段時(shí)間后重訪自己的項(xiàng)目尤其有幫助。

4. python-dotenv

作為開發(fā)人員,我使用Python構(gòu)建依賴于憑據(jù)和敏感設(shè)置的應(yīng)用程序。以下是這些憑據(jù)的一些示例:

  • 用于訪問第三方服務(wù)的API密鑰
  • 密碼和憑據(jù)
  • 標(biāo)志
  • 域名或URL

? 這些憑據(jù)不應(yīng)該硬編碼或版本化在您的腳本中。一種安全的良好實(shí)踐是將它們加載為環(huán)境變量。

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

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

  • pip install python-dotenv
  • 創(chuàng)建一個(gè)包含鍵值對憑據(jù)的.env文件

  • 將.env添加到.gitignore,以防止Git提交它
  • 使用python-dotenv模塊將設(shè)置加載到您的Python文件中

結(jié)論

我希望您發(fā)現(xiàn)這些工具有助于更好地構(gòu)建Python項(xiàng)目的結(jié)構(gòu),并自動化繁瑣和重復(fù)的任務(wù)。


文章名稱:四個(gè)工具幫你輕松將python項(xiàng)目發(fā)布到生產(chǎn)環(huán)境
文章來源:http://www.dlmjj.cn/article/codiphg.html