2011-08-09 19 views
11

मैं वर्तमान में सी # में एक प्रोग्राम बना रहा हूं जो प्रदान की गई पायथन स्क्रिप्ट फ़ाइलों में फ़ंक्शन कॉल करेगा।
इन स्क्रिप्ट फ़ाइलों में से कुछ sys में _getframe() कहता है, जो त्रुटि में परिणाम है:आयरनपीथन sys._getframe नहीं मिला

System.MissingMemberException: 'module' object has no attribute '_getframe'

(के बाद से IronPython _getframe डिफ़ॉल्ट रूप से सक्रिय नहीं है।)

मैं googling के काफी एक बहुत कुछ किया है और पाया कि आप इसे में कमांड लाइन विकल्प के रूप में -X:Frames प्रदान करके सक्रिय कर सकते हैं, हालांकि यह मेरी समस्या का समाधान नहीं करता है क्योंकि मैं पाइथन कोड निष्पादित करने के लिए सीधे ipy.exe का उपयोग नहीं कर रहा हूं।

this thread में वे कमांड लाइन विकल्पों के साथ स्रोत से आयरनपीथन को पुनर्निर्माण का उल्लेख करते हैं, मैंने स्रोत फ़ाइलों को डाउनलोड किया है, लेकिन उन्हें पता नहीं है कि उन विकल्पों के साथ इसे कैसे बनाया जाए।
इसके अलावा वे उल्लेख करते हैं कि विकल्प आधिकारिक इंस्टॉलर में हैं, मैंने इंस्टॉलर exe कई बार चलाया है लेकिन वहां उन विकल्पों की एक झलक नहीं देखी है।

उत्तर

14

जब PythonEngine बनाते हैं तो आप विकल्पों का एक शब्दकोश पास कर सकते हैं; तुम सिर्फ true करने के लिए "फ्रेम्स" और/या शब्दकोश में "FullFrames" कुंजी निर्धारित करने की आवश्यकता:

var options = new Dictionary<string, object>(); 
options["Frames"] = true; 
options["FullFrames"] = true; 
ScriptEngine engine = Python.CreateEngine(options); 

आप FullFrames नहीं करना चाहते हैं, बस इसे बाहर छोड़ या false पर सेट करें।

5

प्रश्न के दायरे से थोड़ा बाहर, लेकिन किसी और के लिए ipy.exe दुभाषिया का उपयोग कर पाइथन लिपि को आमंत्रित करके इस त्रुटि को प्राप्त करने के लिए किसी और के लिए मतलब था।

आप केवल -X:FullFrames तर्क जोड़ सकते हैं। तो उदाहरण के लिए

ipy.exe -X:FullFrames script.py 
जैसे स्क्रिप्ट का आह्वान करें
संबंधित मुद्दे