Tous les produits
Search
Centre de documentation

DataWorks:Utiliser des packages tiers dans un nœud PyODPS

Dernière mise à jour :Aug 09, 2026

Lorsque les fonctionnalités intégrées de PyODPS ne répondent pas à des besoins métier complexes, il peut être nécessaire de réutiliser du code Python ou d'utiliser des bibliothèques open source. DataWorks propose deux solutions : charger des scripts personnalisés via une référence de ressource, ou intégrer des packages tiers à l'aide d'images personnalisées ou d'O&M Assistant. Cette rubrique explique comment appeler des scripts Python personnalisés ou installer et utiliser des packages open source tiers dans les nœuds PyODPS de DataWorks pour étendre vos capacités de traitement des données.

Sélection rapide

Choisissez une approche en fonction de votre environnement et de vos besoins.

Scénario

Type de groupe de ressources

Solution

Utilisation de packages tiers open source

groupe de ressources serverless

Installer des packages open source à l'aide d'une image personnalisée

groupe de ressources exclusif pour la planification

Installer des packages open source à l'aide d'O&M Assistant

Utilisation uniquement de fichiers de script .py personnalisés

groupe de ressources serverless / groupe de ressources exclusif pour la planification

Référencer une ressource Python personnalisée

Le schéma suivant présente les principaux flux de travail pour chaque solution.

Prérequis

Avant de commencer, familiarisez-vous avec les deux concepts clés suivants afin de choisir la méthode de configuration appropriée.

Concepts clés

  1. Type de nœud : PyODPS 2 ou PyODPS 3

    • PyODPS 2 : basé sur un environnement Python 2.7.

    • PyODPS 3 : basé sur un environnement Python 3.7+.

    • Recommandation : Nous vous recommandons vivement d'utiliser PyODPS 3, car le support officiel de Python 2 a pris fin. Cette rubrique utilise PyODPS 3 comme exemple principal.

  2. Type de groupe de ressources : groupe de ressources serverless ou groupe de ressources exclusif pour la planification

    • Groupe de ressources serverless (recommandé) : ce groupe de ressources est élastique et ne nécessite aucune maintenance. Il vous permet d'utiliser des images personnalisées pour gérer les packages tiers.

    • Groupe de ressources exclusif pour la planification (non recommandé) : il s'agit d'une solution héritée. Vous devez acheter et maintenir des serveurs ECS, et ses ressources ne peuvent pas être mises à l'échelle de manière élastique. L'utilisation d'O&M Assistant pour installer les dépendances présente de nombreuses limites et risque de corrompre l'environnement.

Déterminer le type de groupe de ressources

Dans la console DataWorks, accédez à la page Détails de l'espace de travail pour votre espace de travail. Sur la page Groupe de ressources, vérifiez le type de groupe de ressources associé à l'espace de travail.

  • Si le type est General-purpose, vous utilisez un groupe de ressources serverless.

  • Si le type est Data Scheduling, vous utilisez un groupe de ressources exclusif pour la planification.

Installer des packages open source à l'aide d'une image personnalisée

Important

Cette méthode s'applique aux groupes de ressources serverless.

Cette section fournit un exemple complet de création d'un environnement personnalisé incluant le package pendulum. Vous utiliserez ensuite un nœud PyODPS 3 pour appeler ce package afin de récupérer et formater l'heure actuelle pour un fuseau horaire spécifique.

Étape 1 : Créer une image personnalisée contenant la bibliothèque pendulum

Les images personnalisées définissent l'environnement d'exécution d'un groupe de ressources serverless.

  1. Connectez-vous à la console DataWorks et cliquez sur Image Management dans le volet de navigation de gauche.

  2. Accédez à l'onglet Custom Image.

  3. Cliquez sur Create Image dans le coin supérieur gauche. Sur la page de création, configurez les paramètres clés suivants :

    Paramètre

    Description

    Image Name

    Saisissez un nom pour l'image personnalisée, par exemple pyodps3_with_pendulum.

    Reference Type

    Sélectionnez DataWorks Official Image.

    Image Name/ID

    Dans la liste déroulante, sélectionnez l'image officielle DataWorks dataworks_pyodps_task_pod.

    Supported Task Types

    Sélectionnez le type de tâche PyODPS 3.

    Installation Package

    Sélectionnez Python3, puis choisissez le package pendulum fourni par le système dans la liste déroulante.

    Pour installer un package open source qui n'est pas intégré, vous pouvez utiliser le mode Script pour une installation manuelle. Pour plus d'informations sur les méthodes de configuration, consultez Paramètres de création d'une image personnalisée.
    Important

    Pour installer des packages open source depuis l'internet public, le VPC associé au groupe de ressources serverless doit avoir un accès au réseau public.

  4. Cliquez sur OK pour créer l'image personnalisée.

  5. Sur la page Custom Images, testez puis déployez l'image. Une image doit réussir le test avant de pouvoir être déployée.

  6. Dans la colonne Operation de l'image cible, cliquez sur image > Modify Owning Workspace pour associer un espace de travail propriétaire à l'image personnalisée.

    Une fois l'image déployée avec succès, son Deployment Status passe à Deployed, et un bouton Disable apparaît dans la colonne Actions. Le menu déroulant Actions comprend également des options telles que Modify, Build, View Versions et Delete Image.

Étape 2 : Créer et configurer un nœud PyODPS 3

  1. Dans la barre de navigation de gauche, cliquez sur Data Development and O&M > Data Studio, sélectionnez l'espace de travail cible dans la liste déroulante, puis cliquez sur Go to DataStudio.

  2. Dans un flux métier existant, créez un nœud PyODPS 3 nommé pyodps3_pendulum_test.

  3. Dans l'éditeur de code du nœud pyodps_pendulum_test, saisissez le code Python 3 suivant :

    # The pendulum package is installed in the custom image, so you can import it directly.
    import pendulum
    print("Start testing the third-party package pendulum...")
    try:
        # Use pendulum to get the current time in the "Asia/Shanghai" time zone.
        shanghai_time = pendulum.now('Asia/Shanghai')
        # Print the formatted time and time zone information.
        print(f"Successfully imported the 'pendulum' package.")
        print(f"The current time in Shanghai is: {shanghai_time.to_datetime_string()}")
        print(f"The corresponding time zone is: {shanghai_time.timezone_name}")
        print("\nTest passed! The PyODPS node successfully called the third-party package.")
    except Exception as e:
        print(f"Test failed. An error occurred: {e}")

Étape 3 : Tester et vérifier le résultat

  1. Cliquez sur l'icône ** dans la barre d'outils pour exécuter le code. Dans la boîte de dialogue Parameter, sélectionnez l'image pyodps3_with_pendulum que vous avez créée.

    Important

    Si vous ne trouvez pas l'image cible, assurez-vous qu'elle est associée à l'espace de travail actuel. Pour plus d'informations, consultez l'étape 6 de « Étape 1 : Créer une image personnalisée ».

  2. Consultez le journal d'exécution en bas de la page. La sortie suivante indique que le package pendulum a été appelé avec succès.

    Start testing the third-party package pendulum...
    Successfully imported the 'pendulum' package.
    The current time in Shanghai is: 2025-09-27 15:45:00
    The corresponding time zone is: Asia/Shanghai
    Test passed! The PyODPS node successfully called the third-party package.

Étape 4 : Déployer le nœud PyODPS 3

Une fois le test terminé, accédez à Scheduling > Resource Group dans le volet de droite. Sélectionnez votre groupe de ressources serverless et définissez l'image sur l'image personnalisée pyodps3_with_pendulum que vous avez créée. Vous pouvez ensuite déployer le nœud vers Operation Center.

Installer des packages open source à l'aide d'O&M Assistant

Important

Cette méthode s'applique aux groupes de ressources exclusifs pour la planification, qui constituent une solution héritée et ne sont plus recommandés. Nous vous recommandons de migrer vers des groupes de ressources serverless, plus puissants et flexibles.

  1. Connectez-vous à la liste des espaces de travail DataWorks, changez de région en haut de la page, puis cliquez sur Details dans la colonne Operation de l'espace de travail cible pour accéder à la page des détails de l'espace de travail.

  2. Dans la barre de navigation de gauche, cliquez sur Resource Group, recherchez le groupe de ressources exclusif pour la planification associé, et dans la colonne Actions, cliquez sur image > O&M Assistant.

  3. Sur la page O&M Assistant, cliquez sur Create Command dans le coin supérieur gauche.

  4. Saisissez la commande correspondant à votre version Python :

    • Python 3 (PyODPS 3) : Conservez les options par défaut. Dans la liste déroulante du type de package Python3, sélectionnez le package d'installation pendulum.

    • Python 2 (PyODPS 2) : Sélectionnez le mode Manual Input et saisissez le contenu de la commande.

      pip install --upgrade pip
      pip install "pendulum<2.0"
  5. Sur la page O&M Assistant, cliquez sur Run Command dans la colonne Actions. Une fois la commande exécutée avec succès, vous pouvez directement utiliser import pendulum dans le nœud PyODPS correspondant.

Référencer une ressource Python personnalisée

Si vous avez uniquement besoin d'appeler une fonction à partir d'un autre fichier .py, suivez ces étapes :

  1. Créer une ressource Python

    1. Sur la page Data Development, faites un clic droit sur le flux métier cible et choisissez Create Resource > MaxCompute > Python.

    2. Dans la boîte de dialogue Create Resource, saisissez un Name pour la ressource, par exemple my_utils.py, et cliquez sur Create.

    3. Saisissez le code suivant dans l'éditeur de ressource Python.

      # my_utils.py (Python 3 syntax)
      def say_hello(name):
          print(f"Hello, {name}! This is from the my_utils module.")
    4. Enregistrez et envoyez la ressource.

  2. Créer un nœud et référencer une ressource

    • Dans le flux métier cible, faites un clic droit sur MaxCompute, sélectionnez Create Node > PyODPS 3, et suivez les instructions à l'écran pour créer le nœud.

    • Dans le nœud, référencez la ressource à l'aide de la directive ##@resource_reference{"my_utils.py"}. Le code complet est le suivant :

      ##@resource_reference{"my_utils.py"}
      import sys
      import os
      # Add the resource's current directory to the Python interpreter's search path.
      sys.path.append(os.path.dirname(os.path.abspath('my_utils.py')))
      # You can now import and use the resource like a regular module.
      import my_utils
      my_utils.say_hello("DataWorks")
  3. Exécutez le nœud. La sortie « Hello, DataWorks! This is from the my_utils module. » apparaît dans le journal.

FAQ

  • Q : Lors de l'installation manuelle d'un package via une commande, pourquoi le test de l'image personnalisée reste-t-il bloqué pendant longtemps ?

    • Si l'environnement d'exécution de la tâche dépend d'un package tiers provenant d'internet public, le VPC associé au groupe de ressources serverless doit avoir un accès au réseau public. Pour plus d'informations, consultez Activer l'accès au réseau public pour un groupe de ressources.

    • Essayez de changer de source de package Python, par exemple https://mirrors.aliyun.com/pypi/simple/. Les miroirs Alibaba Cloud ne nécessitent pas d'accès au réseau public.

  • Q : Que faire si l'importation d'un package tiers échoue ?

    1. Assurez-vous que l'image personnalisée a été déployée avec succès.

    2. Assurez-vous que le type de tâche pris en charge par l'image (PyODPS 2 ou PyODPS 3) correspond au type de votre nœud.

    3. Assurez-vous que l'image personnalisée correcte est sélectionnée dans les Properties du nœud.

      Vous ne pouvez pas sélectionner un groupe de ressources public.
    4. Vérifiez si la version du package installé est compatible avec votre version Python. Par exemple, pendulum 2.0 et versions ultérieures ne prennent pas en charge Python 2.

Documents connexes