DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Une union simple entre .NET Core et Python
    Uncategorized

    Une union simple entre .NET Core et Python

    janvier 28, 2023
    Une union simple entre .NET Core et Python
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Python est un langage de programmation puissant et polyvalent qui est devenu de plus en plus populaire. Pour beaucoup, c’est l’un des tout premiers langages de programmation qu’ils maîtrisent au début. Certains des articles les plus fréquentés sur mon blog plusieurs années après leur écriture envisagent d’utiliser C # et Python ensemble. Aujourd’hui, nous allons explorer comment vous pouvez utiliser Python à partir d’une application C# .NET Core avec des approches beaucoup plus modernes que mes articles originaux. Entrez Pythonnet !

    Package Pythonnet et mise en route

    Nous allons examiner Python pour .NET afin d’atteindre cet objectif. Cette bibliothèque vous permet de tirer parti de Python installé sur la machine en cours d’exécution à partir de vos applications .NET Core. Vous devez le configurer pour qu’il pointe vers la DLL Python correspondante que vous souhaitez utiliser, et après quelques lignes d’initialisation, vous êtes prêt pour la course !

    Exemple 1 : Hello World avec Pythonnet

    Pour commencer, vous devrez installer le package pythonnet à partir de NuGet. Une fois que vous avez fait cela, vous pouvez utiliser le code suivant pour exécuter un script Python à partir de votre code C# :

    using Python.Runtime;
    
    internal sealed class Program
    {
        private static void Main(string[] args)
        {
            // NOTE: set this based on your python install. this will resolve from
            // your PATH environment variable as well.
            Runtime.PythonDLL = "python310.dll";
    
            PythonEngine.Initialize();
            using (Py.GIL())
            {
                using var scope = Py.CreateScope();
                scope.Exec("print('Hello World from Python!')");
            }
        }
    }

    Ce code définit notre chemin DLL python sur le Runtime, ce qui sera une étape nécessaire. N’oubliez pas de le faire ! Nous devons ensuite appeler PythonEngine.Initialize() et Py.GIL(), dont nous voudrons nous débarrasser plus tard, alors considérez une instruction using. Nous pouvons demander à la classe Py statique de créer une portée à utiliser, puis tirer parti de la méthode Exec afin d’exécuter du code Python. Dans cet exemple, nous appelons la méthode Exec pour exécuter un script Python simple qui affiche « Hello World from Python! » à la console.

    Exemple 2 : Une calculatrice Pythonnet !

    Vous pouvez également utiliser l’API Python C pour appeler des fonctions Python directement à partir du code C#. Pour ce faire, vous devrez créer un wrapper C# pour la fonction Python que vous souhaitez appeler. Voici un exemple de la manière dont vous pouvez créer un wrapper pour une fonction Python qui prend deux entiers comme arguments et renvoie leur somme :

    using System;
    using Python.Runtime;
    
    internal sealed class Program
    {
        private static void Main(string[] args)
        {
            // NOTE: set this based on your python install. this will resolve from
            // your PATH environment variable as well.
            Runtime.PythonDLL = "python310.dll";
            PythonEngine.Initialize();
    
            using (Py.GIL())
            {
                // NOTE: this doesn't validate input
                Console.WriteLine("Enter first integer:");
                var firstInt = int.Parse(Console.ReadLine());
                Console.WriteLine("Enter second integer:");
                var secondInt = int.Parse(Console.ReadLine());
    
                using dynamic scope = Py.CreateScope();
                scope.Exec("def add(a, b): return a + b");
    
                var sum = scope.add(firstInt, secondInt);
                Console.WriteLine($"Sum: {sum}");
            }
        }
    }

    Dans cet exemple, nous utilisons la méthode Exec pour définir une fonction Python appelée « add » qui prend deux entiers comme arguments et renvoie leur somme. Grâce au mot-clé dynamique en C #, nous sommes en mesure de supposer que notre objet de portée a une méthode appelée « add » directement dessus. Enfin, nous utilisons directement le code C# pour appeler la méthode « add » comme si elle se trouvait à l’intérieur de C#. Le type de retour assigné à la variable « sum » en C# est également dynamique, mais vous pouvez déclarer cette variable comme un entier et elle se compilera correctement avec ce type également.

    Et après?

    Vous pouvez voir plus d’exemples en consultant l’article complet sur mon blog ! Quels types d’applications créeriez-vous qui auraient besoin d’appeler du code Python à partir de C# ?

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.