Rumah >pembangunan bahagian belakang >Tutorial Python >GCP menerbitkan pakej python dalam pengeluaran

GCP menerbitkan pakej python dalam pengeluaran

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-20 12:29:13572semak imbas

GCP publish python package in production

GCP: Terbitkan Pakej Python dalam Pengeluaran

Panduan ini menerangkan cara menggunakan Google Artifact Registry untuk mengurus kod Python yang dikongsi sebagai pakej. Pendekatan ini menghapuskan pertindihan kod antara Fungsi Awan dan pelayan anda.


Langkah 1: Susun Kod Dikongsi Anda

Buat pakej Python baharu untuk logik kongsi anda (cth. common_logic).

common_logic/
├── setup.py
├── common_logic/
│   ├── __init__.py

Langkah 2: Cipta setup.py

Tentukan konfigurasi pakej anda dalam fail setup.py:

common_logic/
├── setup.py
├── common_logic/
│   ├── __init__.py

Langkah 3: Sediakan Pendaftaran Artifak Google

  1. Dayakan API Pendaftaran Artifak:
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",
)
  1. Buat repositori Python:
   gcloud services enable artifactregistry.googleapis.com

Langkah 4: Konfigurasikan Pengesahan

  1. Buat akaun perkhidmatan:
   gcloud artifacts repositories create python-packages \
       --repository-format=python \
       --location=us-central1 \
       --description="Python packages repository"
  1. Berikan kebenaran yang diperlukan:
   gcloud iam service-accounts create artifact-publisher \
       --description="Service account for publishing to Artifact Registry"
  1. Buat dan muat turun kunci:
   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"

Langkah 5: Bina dan Muat Naik Pakej

  1. Pasang alat binaan:
   gcloud iam service-accounts keys create key.json \
       --iam-account=artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com
  1. Bina pakej:
   pip install build twine
  1. Konfigurasikan benang untuk Pendaftaran Artifak:
   python -m build
  1. Muat naik pakej:
   cat > ~/.pypirc << EOL
   [distutils]
   index-servers = common-logic-repo
   [common-logic-repo]
   repository: https://us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/
   username: _json_key_base64
   password: $(base64 -w0 key.json)
   EOL

Langkah 6: Gunakan Pakej

Dalam Fungsi Awan

  1. Buat fail requirements.txt:
   twine upload --repository common-logic-repo dist/*
  1. Gunakan pakej dalam Fungsi Awan anda:
   --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

Dalam Kod Pelayan

  1. Tambahkan pada keperluan pelayan anda.txt:
   from common_logic import ...

   def cloud_function(request):
       # Your cloud function code using the imported functions
       pass
  1. Gunakannya dalam kod pelayan anda:
   --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

Langkah 7: Integrasi CI/CD

  1. Tambahkan kunci akaun perkhidmatan sebagai rahsia dalam repositori GitHub anda.
  2. Kemas kini konfigurasi Cloud Build anda:
   from common_logic import ...
   # Your server code using the imported functions

Langkah 8: Pengurusan Versi

  1. Kemas kini versi dalam setup.py.
  2. Bina dan muat naik versi baharu.
  3. Kemas kini requirements.txt dalam kedua-dua Fungsi Awan dan kod pelayan.
  4. Letakkan kedua-dua komponen.

Amalan Terbaik

  • Gunakan versi semantik untuk pakej anda.
  • Sematkan versi khusus dalam requirements.txt.
  • Uji versi baharu dengan teliti sebelum digunakan.
  • Simpan log perubahan perubahan versi.
  • Gunakan pembolehubah persekitaran untuk PROJECT_ID dan LOCATION.
  • Sertakan dokumentasi komprehensif dalam pakej anda.

Isu dan Penyelesaian Biasa

Ralat Pengesahan

  • Sahkan kebenaran akaun perkhidmatan.
  • Pastikan key.json dikodkan dengan betul.
  • Semak konfigurasi .pypirc.

Pakej Tidak Ditemui

  • Sahkan format URL repositori.
  • Semak sama ada pakej berjaya dimuat naik.
  • Pastikan requirements.txt menggunakan format URL yang betul.

Konflik Versi

  • Sematkan versi kebergantungan tertentu.
  • Gunakan persekitaran maya untuk ujian.
  • Dokumenkan keperluan pergantungan dengan jelas.

Atas ialah kandungan terperinci GCP menerbitkan pakej python dalam pengeluaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn