Maison > développement back-end > Tutoriel Python > GCP publie le package Python en production

GCP publie le package Python en production

Mary-Kate Olsen
Libérer: 2024-11-20 12:29:13
original
589 Les gens l'ont consulté

GCP publish python package in production

GCP : publier un package Python en production

Ce guide explique comment utiliser Google Artifact Registry pour gérer le code Python partagé sous forme de package. Cette approche élimine la duplication de code entre vos fonctions Cloud et votre serveur.


Étape 1 : Structurez votre code partagé

Créez un nouveau package Python pour votre logique partagée (par exemple, common_logic).

common_logic/
├── setup.py
├── common_logic/
│   ├── __init__.py
Copier après la connexion
Copier après la connexion

Étape 2 : Créer setup.py

Définissez la configuration de votre package dans un fichier setup.py :

common_logic/
├── setup.py
├── common_logic/
│   ├── __init__.py
Copier après la connexion
Copier après la connexion

Étape 3 : Configurer le registre d'artefacts Google

  1. Activez l'API Artifact Registry :
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",
)
Copier après la connexion
  1. Créez un dépôt Python :
   gcloud services enable artifactregistry.googleapis.com
Copier après la connexion

Étape 4 : Configurer l'authentification

  1. Créez un compte de service :
   gcloud artifacts repositories create python-packages \
       --repository-format=python \
       --location=us-central1 \
       --description="Python packages repository"
Copier après la connexion
  1. Accordez les autorisations nécessaires :
   gcloud iam service-accounts create artifact-publisher \
       --description="Service account for publishing to Artifact Registry"
Copier après la connexion
  1. Créer et télécharger une clé :
   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"
Copier après la connexion

Étape 5 : Créer et télécharger le package

  1. Installer les outils de build :
   gcloud iam service-accounts keys create key.json \
       --iam-account=artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com
Copier après la connexion
  1. Construisez le package :
   pip install build twine
Copier après la connexion
  1. Configurer Twine pour Artifact Registry :
   python -m build
Copier après la connexion
  1. Téléchargez le package :
   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
Copier après la connexion

Étape 6 : Utilisez le package

Dans les fonctions cloud

  1. Créez un fichier exigences.txt :
   twine upload --repository common-logic-repo dist/*
Copier après la connexion
  1. Utilisez le package dans votre fonction Cloud :
   --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
Copier après la connexion
Copier après la connexion

Dans le code serveur

  1. Ajoutez au fichier requis.txt de votre serveur :
   from common_logic import ...

   def cloud_function(request):
       # Your cloud function code using the imported functions
       pass
Copier après la connexion
  1. Utilisez-le dans le code de votre serveur :
   --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
Copier après la connexion
Copier après la connexion

Étape 7 : Intégration CI/CD

  1. Ajoutez la clé du compte de service comme secret dans votre référentiel GitHub.
  2. Mettez à jour votre configuration Cloud Build :
   from common_logic import ...
   # Your server code using the imported functions
Copier après la connexion

Étape 8 : Gestion des versions

  1. Mettez à jour la version dans setup.py.
  2. Créez et téléchargez la nouvelle version.
  3. Mettez à jour le fichier Requirements.txt dans Cloud Functions et dans le code du serveur.
  4. Déployez les deux composants.

Meilleures pratiques

  • Utilisez le versionnement sémantique pour votre package.
  • Épinglez des versions spécifiques dans Requirements.txt.
  • Testez minutieusement les nouvelles versions avant de les déployer.
  • Tenir un journal des modifications de version.
  • Utilisez les variables d'environnement pour PROJECT_ID et LOCATION.
  • Incluez une documentation complète dans votre colis.

Problèmes courants et solutions

Erreurs d'authentification

  • Vérifiez les autorisations du compte de service.
  • Assurez-vous que key.json est correctement codé.
  • Vérifiez la configuration de .pypirc.

Paquet introuvable

  • Vérifiez le format de l'URL du référentiel.
  • Vérifiez si le package a été téléchargé avec succès.
  • Assurez-vous que le fichier requis.txt utilise le format d'URL correct.

Conflits de versions

  • Épinglez des versions spécifiques des dépendances.
  • Utilisez des environnements virtuels pour les tests.
  • Documenter clairement les exigences de dépendance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal