2016-12-09 10 views
6

.NET-Core अनुप्रयोग में पायथन का उपयोग कैसे करें? मुझे हैकथॉन के प्रयोजनों के लिए इसकी आवश्यकता है इसलिए समाधान को 'सुरुचिपूर्ण' होना जरूरी नहीं है। मैंने पढ़ा है कि पाइथन स्क्रिप्ट को सीधे चलाने के लिए यह असंभव है क्योंकि मानक एएसपी.नेट के लिए केवल लाइब्रेरी आयरनपीथन मौजूद है लेकिन .NET-Core के लिए नहीं। तो पाइथन स्क्रिप्ट का उपयोग करने का सबसे आसान तरीका क्या है? .NET-Core अनुप्रयोग में पायथन का उपयोग कैसे करें?

+4

बस FYI .net कोर के लिए IronPython के बारे में: IronPython अभी तक .NET कोर के लिए उपलब्ध नहीं है। यह अभी भी विकास में है और .NET कोर 1.1 या 1.2 के साथ आता है https://github.com/IronLanguages/ironpython3/issues/77 –

+0

ठीक है, लेकिन वहां जाने के लिए बहुत ही जटिल तरीका नहीं होना चाहिए। मैंने अपनी लाइव पायथन स्क्रिप्ट में कभी नहीं देखा है, लेकिन मुझे लगता है कि वेबसाइट को ढूंढना/बनाना संभव है जिस पर मैं अपनी एएसपी ऐप से JSON द्वारा अपनी स्क्रिप्ट, पोस्ट पैरामीटर डाल सकता हूं और परिणाम प्राप्त कर सकता हूं। हो सकता? –

+1

आप पाइथन पर जा सकते हैं और एक अजगर वेब-एपीआई (डीजेंगो, ...) बना सकते हैं और सी # से वेब-एपीआई कॉल कर सकते हैं। लेकिन मुझे नहीं लगता, नेट कोर के साथ पाइथन को गठबंधन करना संभव है (कम से कम अभी तक)। नेट कोर अभी भी युवा है। या आप रास्ते पर जाते हैं, पाइथन स्क्रिप्ट लिखते हैं और उन्हें 'प्रक्रिया' के साथ कॉल करते हैं और स्क्रिप्ट-पथ के साथ python.exe को कॉल करते हैं। मुझे किसी अन्य तरीके से नहीं पता ... –

उत्तर

0

का प्रयास करें (क्योंकि यह आयोजित हैकथॉन है तो यह और भी पीएचपी सर्वर का उपयोग करने या सेलेनियम आदि केवल निष्पादित करने के लिए स्क्रिप्ट ठीक है) इस

public class RunCmd 
{ 
    public string Run(string cmd, string args) 
    { 
     ProcessStartInfo start = new ProcessStartInfo(); 
     start.FileName = "python"; 
     start.Arguments = string.Format("\"{0}\" \"{1}\"", cmd, args); 
     start.UseShellExecute = false;// Do not use OS shell 
     start.CreateNoWindow = true; // We don't need new window 
     start.RedirectStandardOutput = true;// Any output, generated by application will be redirected back 
     start.RedirectStandardError = true; // Any error in standard output will be redirected back (for example exceptions) 
     using (Process process = Process.Start(start)) 
     { 
      using (StreamReader reader = process.StandardOutput) 
      { 
       string stderr = process.StandardError.ReadToEnd(); // Here are the exceptions from our Python script 
       string result = reader.ReadToEnd(); // Here is the result of StdOut(for example: print "test") 
       return result; 
      } 
     } 
    } 
} 

फिर

var res = new RunCmd().Run("your_python_file.py","params"); 
Console.WriteLine(res); 
संबंधित मुद्दे