2015-09-09 16 views
6

पर विफल रहता है मैं स्क्रिप्ट से पाइथननेट रनटाइम डीएल लोड करने का प्रयास करता हूं और यह रोस्लिन बैकएंड के साथ काम नहीं करता है क्योंकि Roslyn में गतिशील समर्थित नहीं है , लेकिन मोनो बैकएंड निम्न त्रुटि के साथ chokes:स्क्रिप्टिक्स 'गतिशील' के लिए Roslyn द्वारा समर्थित नहीं है और केवल मोनो के साथ उपलब्ध है, लेकिन मोनो डीएलएल

$ scriptcs -modules mono 
scriptcs (ctrl-c to exit or :help for help) 

> #r "F:\Python\Python27\Lib\site-packages\Python.Runtime.dll" 
error CS0009: Metadata file `F:\Python\Python27\Lib\site-packages\Python.Runtime.dll' does not contain valid metadata 

प्रश्न:


मैं Python.Runtime.DLL के साथ काम करने scriptcs की मोनो बैकएंड कैसे मिल सकता है? क्या मुझे इससे पहले किसी भी डीएलएल लोड करने की ज़रूरत है? क्या Python.Runtime.DLL को मोनो समर्थन के साथ संकलित किया जाना चाहिए या .NET ठीक है?

+0

https://github.com/scriptcs/scriptcs/issues/1092 – denfromufa

उत्तर

4

यह त्रुटि (मोनो कंपाइलर के साथ सीएस000 9) काफी सामान्य है और इसका मतलब है कि दिए गए असेंबली के साथ "कुछ गलत" है, इसलिए डीबग करना बहुत मुश्किल है। आगे बढ़ने का एक तरीका वास्तव में मोनो के तहत संकलित है। यदि आप अपना स्रोत कोड डाउनलोड करते हैं (https://github.com/pythonnet) आपको यह कैसे करना है, इसके बारे में निर्देश मिलेगा (pythonnet \ src \ monoclr \ README.txt भी देखें)।

हालांकि, आपके लक्ष्यों के आधार पर, आप इसके बजाय आयरनपीथन का उपयोग करने पर विचार कर सकते हैं, जिसे आधिकारिक तौर पर मोनो द्वारा समर्थित किया जाता है और बॉक्स से बाहर चला जाता है। उदाहरण नीचे मानता है कि आपके IronPython की जिप डाउनलोड किया है और इसे कहीं निकाले:

scriptcs -modules mono 
scriptcs (ctrl-c to exit or :help for help) 
> #r "G:\dev_tools\IronPython-2.7.5\IronPython-2.7.5\IronPython.dll" 
> #r "G:\dev_tools\IronPython-2.7.5\IronPython-2.7.5\Microsoft.Dynamic.dll" 
> #r "G:\dev_tools\IronPython-2.7.5\IronPython-2.7.5\Microsoft.Scripting.dll" 
> using System; 
> using System.IO; 
> using IronPython.Hosting; 
> using Microsoft.Scripting; 
> using Microsoft.Scripting; 
> using Microsoft.Scripting.Hosting; 
> string script = "print 'hello world'"; 
> var engine = Python.CreateEngine(); 
> var scope = engine.CreateScope(); 
> var source = engine.CreateScriptSourceFromString(script, SourceCodeKind.Statements); 
> var compiled = source.Compile(); 
> var result = compiled.Execute(scope); 
hello world 
> 
+0

बिंदु सहभागी CPython संख्यात्मक कोड सी # में एम्बेडेड परीक्षण कर रहा है। Ironpython एक विकल्प नहीं है। – denfromufa

+0

मुझे .NET के अंतर्गत परीक्षण करने की आवश्यकता है, क्योंकि यह उत्पादन वातावरण है, मोनो नहीं। – denfromufa

+0

.NET उत्पादन वातावरण है लेकिन स्क्रिप्ट में आप अपने उदाहरण में मोनो के तहत लोड हो रहे हैं। तो आप मोनो के तहत काम कर रहे हैं, और पाइथननेट मोनो के तहत पुन: संकलन के बिना वहां काम नहीं करेगा। – Evk