GCP:在生產環境中發布 Python 套件
本指南介紹如何使用 Google ArtifactRegistry 將共享 Python 程式碼作為套件進行管理。這種方法消除了 Cloud Functions 和伺服器之間的程式碼重複。
第 1 步:建立您的共享程式碼
為您的共享邏輯建立一個新的 Python 套件(例如 common_logic)。
common_logic/ ├── setup.py ├── common_logic/ │ ├── __init__.py
步驟2:建立setup.py
在 setup.py 檔案中定義你的套件配置:
common_logic/ ├── setup.py ├── common_logic/ │ ├── __init__.py
步驟 3: 設定 Google Artifact 註冊表
- 啟用 ArtifactRegistry API:
from setuptools import setup, find_packages setup( name="common_logic", version="0.1.0", packages=find_packages(), install_requires=[ "pandas>=1.3.0", ], author="Your Name", author_email="your.email@example.com", description="Common logic for app", )
- 建立Python儲存庫:
gcloud services enable artifactregistry.googleapis.com
步驟 4:設定身份驗證
- 建立服務帳戶:
gcloud artifacts repositories create python-packages \ --repository-format=python \ --location=us-central1 \ --description="Python packages repository"
- 授予必要的權限:
gcloud iam service-accounts create artifact-publisher \ --description="Service account for publishing to Artifact Registry"
- 建立並下載金鑰:
gcloud artifacts repositories add-iam-policy-binding python-packages \ --location=us-central1 \ --member="serviceAccount:artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/artifactregistry.writer"
第 5 步:建置並上傳包
- 安裝建置工具:
gcloud iam service-accounts keys create key.json \ --iam-account=artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com
- 建置包:
pip install build twine
- 為 ArtifactRegistry 配置 twine:
python -m build
- 上傳包:
cat > ~/.pypirc <hr> <h2> 第 6 步:使用套件 </h2> <h3> 在雲函數中 </h3> <ol> <li>建立requirements.txt檔案: </li> </ol> <pre class="brush:php;toolbar:false"> twine upload --repository common-logic-repo dist/*
- 在您的雲函數中使用該套件:
--index-url https://pypi.org/simple --extra-index-url https://oauth2accesstoken:${ARTIFACT_REGISTRY_TOKEN}@us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/simple/ common-logic==0.1.0
在伺服器程式碼中
- 新增到伺服器的requirements.txt:
from common_logic import ... def cloud_function(request): # Your cloud function code using the imported functions pass
- 在您的伺服器程式碼中使用它:
--index-url https://pypi.org/simple --extra-index-url https://oauth2accesstoken:${ARTIFACT_REGISTRY_TOKEN}@us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/simple/ common-logic==0.1.0
第 7 步:CI/CD 集成
- 將服務帳戶金鑰新增為 GitHub 儲存庫中的秘密。
- 更新您的 Cloud Build 設定:
from common_logic import ... # Your server code using the imported functions
步驟8:版本管理
- 更新setup.py中的版本。
- 建置並上傳新版本。
- 更新 Cloud Functions 和伺服器程式碼中的requirements.txt。
- 部署兩個元件。
最佳實踐
- 為您的套件使用語意版本控制。
- 在requirements.txt中固定特定版本。
- 在部署之前徹底測試新版本。
- 保留版本變更的變更日誌。
- 使用 PROJECT_ID 和 LOCATION 的環境變數。
- 在您的包中包含全面的文件。
常見問題及解決方案
身份驗證錯誤
- 驗證服務帳戶權限。
- 確保 key.json 已正確編碼。
- 檢查 .pypirc 配置。
找不到包裹
- 驗證儲存庫 URL 格式。
- 檢查包是否上傳成功。
- 確保requirements.txt使用正確的URL格式。
版本衝突
- 固定依賴項的特定版本。
- 使用虛擬環境進行測試。
- 明確文檔依賴性要求。
以上是GCP 在生產中發布 python 包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...

如何使用正則表達式匹配到第一個閉合標籤就停止?在處理HTML或其他標記語言時,常常需要使用正則表達式來�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能