c# - পাইথন ইনস্টল না করে.নেট পরিবেশে পাইথন কোড চালানো




python .net (4)

আপনি যদি আপনার উত্পাদন পরিবেশে একটি নতুন ভাষা পরিচয় দিতে না চান তবে আপনার পাইথন প্রবর্তনের পরিবর্তে আপনার সমস্ত কোড C # রাখা উচিত।

যে বলে, আপনি পাইথন রানটাইম ইনস্টল করতে হবে না, কিন্তু আপনি একটি রানটাইম পাওয়া প্রয়োজন হবে। যদি এটি একটি nuget প্যাকেজ ইনস্টল করতে থাকে, কিছু মোনো বাস্তবায়ন, বা যাই হোক না কেন, আপনি পাইথন কমান্ডগুলি ব্যাখ্যা করার জন্য কিছু নির্ভরতার উপর নির্ভর করতে যাচ্ছেন।

এখানে একটি নিবন্ধ আছে, যা আমি আপনার প্রশ্নের উত্তর বিশ্বাস করি। এটি ইনস্টল না করে একটি বস্তাবন্দী পাইথন প্যাকেজ কিভাবে ব্যবহার করবেন

পাইথন ইন্সটল না করেই পিএইচওন কোডটি পিএইচথন কোড উত্পাদন করতে পারে এবং পাইথন কোডটি সি # এ পরিবর্তন না করেই কোডটি ঠিকভাবে স্থাপন করা যায়?

আমি জানি পাইথন ভাষাটি ইনস্টল করা যুক্তিসঙ্গত ব্যাপার কিন্তু আমার দ্বিধা হল যে আমি আমার উত্পাদন পরিবেশে নতুন ভাষা পরিচয় দিতে চাই না এবং তার পরীক্ষার এবং রক্ষণাবেক্ষণের জটিলতাগুলি মোকাবেলা করতে চাই না, কারণ আমার যথেষ্ট জনশক্তি নেই যারা এই সমস্যা যত্ন নিতে পাইথন জানেন।

আমি জানি যে আয়রনপথন সিএলআর-এ নির্মিত হয় তবে এটি .NET এর ভিতরে কীভাবে হোস্ট করা এবং রক্ষণাবেক্ষণ করা যায় তা জানি না। এটি কি পিওথন কোডটি "প্যাকেজ" হিসাবে ব্যবহার করতে সক্ষম করে যা সি # কোডে আমদানি করা যায়, প্রকৃতপক্ষে পাইথনটিকে একক ভাষা হিসাবে ইনস্টল না করে? আয়রনপথন এই পরিস্থিতিতে আমার জীবনকে কীভাবে সহজ করে তুলতে পারে? Python.net আমাকে আরো লিভারেজ দিতে পারেন?


আমি মন্তব্যগুলিতে উল্লেখ করেছি, এটি করার সঠিক এবং ভাল উপায় হল আপনার Python কোডের উপর বিশ্রামপূর্ণ পরিষেবা তৈরি করা এবং C# কোড থেকে http-অনুরোধগুলি তৈরি করা। পাইথন-এ ওয়েব-ফ্রেমওয়ার্ক সম্পর্কে আপনি কতটা জানেন তা আমি জানি না তবে আপনি এটি ব্যবহার করতে পারেন এমন কয়েকটি টন আছে। আপনার প্রয়োজনের জন্য, আমি Flask সুপারিশ করব যা হালকা-ওজন মাইক্রো ওয়েব-ফ্রেমওয়ার্কটি রিশুন্য ওয়েব পরিষেবাদি তৈরি করতে।

এটি উদাহরণস্বরূপ খুব সহজ ফ্লাস ওয়েব-পরিষেবা: (আপনি here একটি চলমান সংস্করণ পরীক্ষা করতে পারেন, আমি এটি pythonOnEverywhere হোস্ট করা)

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from Flask!'

@app.route('/math/add/<int:num1>/<int:num2>')
def add(num1, num2):
    return '%d' % (num1+num2)

এই সহজ সেবা, দুটি সংখ্যা যোগ করে এবং তাদের সমষ্টি ফেরত।

এবং C# কোড:

using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

public class Program
{
    // Always use HttpClient as a singleton object
    public static HttpClient _httpClient = new HttpClient() { BaseAddress = new Uri("http://al1b.pythonanywhere.com") } ;
    public async static Task Main()
    {

        var num1 = 1;
        var num2 = 4;

        Console.WriteLine("Making http-request wait ...\r\n");      

        var mathAddResult = await _httpClient.GetAsync($"/math/add/{num1}/{num2}");

        // 200 = OK
        if(mathAddResult.StatusCode == HttpStatusCode.OK)
        {   
            Console.WriteLine(await mathAddResult.Content.ReadAsStringAsync());
        }
    }
}

আউটপুট:

Making http-request wait ... 

5

উপরের কোডের চলমান সংস্করণ এখন .NET Fiddle এ রানযোগ্য

টি এল; ডিআর:

ফ্লাস বুঝতে এবং শেখার জন্য, তার documentions উপর নজর রাখুন। (এটা ছোট এবং ভাল)। আমি নিশ্চিত যে আপনার জটিল ওয়েব-পরিষেবাদিগুলি থাকবে যেমন জটিল বা পোকো বস্তুগুলিকে আপনার ওয়েব-পরিষেবা ইনপুট হিসাবে এবং জটিল সামগ্রীগুলি (জসন হিসাবে) ওয়েব-সার্ভিস ফলাফল হিসাবে গ্রহণ করা।

এই ক্ষেত্রে আপনাকে ফ্লাস্ক jsonify কাজগুলি কীভাবে করতে হবে তা জানা দরকার, এই লিঙ্কটি আপনাকে how বলবে।

ঠিক আছে, অন্যদিকে, আপনার C # অ্যাপ্লিকেশনটিতে আপনার সেই জটিল বস্তু এবং দৃশ্যগুলিও থাকবে। আপনি serialize, deseriaze এবং ইত্যাদি কিভাবে জানতে হবে।

মাইক্রোসফট এখানে তার টিউটোরিয়াল জন্য একটি মহান কাজ করেছেন:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client

এবং

https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netframework-4.8


পিওথন চালানোর সাথে সাথে আয়রন পাইথন সি-ভিত্তিক লাইব্রেরির সাথে পাইথন ইন্টারপ্রেটারের প্রয়োজন, সীমিত নয়। আমি মনে করি এটি নির্ভর করে আপনি পাইথন কোডটি কীভাবে ব্যবহার করছেন, যদি আপনি অনেক তৃতীয় পক্ষের পাইথন লাইব্রেরি ব্যবহার করতে চান তবে আমি সন্দেহ করি যে IronPython আপনার চাহিদাগুলি মাপবে।

একটি সম্পূর্ণ পাইথন অ্যাপ্লিকেশন নির্মাণ সম্পর্কে কিন্তু ডকার থেকে এটি সব চলমান?

ডকারে ইনস্টল করার জন্য আপনার পরিবেশের প্রয়োজন হবে, তবে আপনি ডকরের সাহায্যে আপনার .NET অ্যাপ্লিকেশনগুলিও নিযুক্ত করতে পারেন এবং তারা সমস্ত বিচ্ছিন্ন হয়ে যাবে এবং আপনার 'পরিবেশ' নষ্ট হবে না।

সেখানে বেস ডকার চিত্র রয়েছে যা বিশেষত বিল্ডিং পাইথন এবং। নেট প্রকল্পের জন্য এবং চলমান জন্যও রয়েছে।


যদি আপনি কোনও পিওথন কোডটি .NET থেকে চালাতে চান এবং আপনি অ্যাপ্লিকেশনের সাথে পাইথনটি চালাতে চান না তবে আপনাকে https://cython.org/ মতো কিছু ব্যবহার করে পাইথন কোডটিকে EXE এ ডাউন করতে হবে।

আপনি কমান্ড লাইনে এটিতে ভেরিয়েবলগুলি প্রেরণ করতে পারেন এবং পাইথন থেকে কনসোলে লিখিত এবং পাইপন ফাংশন থেকে উত্তরগুলি পাইথন থেকে প্রেরণ করে এবং আপনার দ্বারা প্রক্রিয়াকৃত প্রক্রিয়াটির আউটপুট ক্যাপচার করে। এইভাবে এটি অন্য কোন সাব বা ফাংশন কল করার মতো কাজ করবে, শুধুমাত্র পার্থক্যটি হল প্রতিটি পদ্ধতি। নেটতে একটি নতুন প্রক্রিয়া। যদি আপনি জটিল বস্তুগুলিকে আগে এবং বাইরে পাস করতে চান তবে এটি সত্যিই জটিল হতে পারে, কারণ আপনি উপাদানগুলির মধ্যে পাঠ্য হিসাবে প্রবাহিত হয়ে সেগুলিকে আনপ্র্যাপ এবং মোড়ানো হিসাবে মোড়ানো হবে।

অবশেষে, আপনি আপনার পাইথন কোডটি কেবল নেটতে পুনরায় লেখার পক্ষে ভাল হবেন এবং এই পথে যাবেন না। সমস্ত পাইথন কোড C # এ রূপান্তর করতে https://github.com/uxmal/pytocs মতো একটি রূপান্তরকারী সরঞ্জাম ব্যবহার করুন। সম্ভবত এটি নিখুঁত হবে না তবে এটি আপনি ব্যবহার করতে চান এমন পাইথন ফাংশনগুলি প্রতিস্থাপনের জন্য কাজ করার জন্য একটি কোডবেস দেবে। অনুবাদ করা পদ্ধতিগুলি পরিষ্কার করার জন্য এটি আপনাকে কম সময় দেবে, এটির মধ্যে উভয় ভাষা এবং ইন্টার-ফাংশনগুলি বজায় রাখার চেষ্টা করবে।





python.net