У меня есть файл Python с содержимым:
import re
import urllib
class A(object):
def __init__(self, x):
self.x = x
def getVal(self):
return self.x
def __str__(self):
return "instance of A with value '%s'" % (self.getVal())
У меня также есть простой консольный проект на C # со следующим кодом:
engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile("test.py");
ScriptScope scope = engine.CreateScope();
ObjectOperations op = engine.Operations;
source.Execute(scope); // class object created
object klaz = scope.GetVariable("A"); // get the class object
object instance = op.Call(klaz, "blabla waarde"); // create the instance
object method = op.GetMember(instance, "getVal"); // get a method
string result = (string)op.Call(method); // call method and get result (9)
Console.WriteLine("Result: " + result); //output: 'Result: blabla waarde'
(я получил это от этого стекового запроса и ответа )
Если я пропущу оператор import urllib в файле Python, все будет работать нормально. (имеется в виду, что модуль re)
Но как только я добавляю import urllib
или import urllib2
, я получаю следующее исключение:
ImportException was unhandled
No module named urllib
Так что почему-то он не может найти urllib. Я проверил папку lib IronPython и определенно есть и urllib, и urllib 2.
Такое же исключение выдается, когда я импортирую urllib в код C #. (engine.ImportModule("urllib");
)
Есть идеи?
Я хотел бы управлять импортом в коде Python, а не в коде C #.
(Поэтому я бы хотел избежать таких вещей: engine.ImportModule("urllib");
)
Edit:
Некоторая дополнительная информация о том, для чего я собираюсь использовать это (возможно, у кого-то есть альтернатива):
У меня будет основное приложение на C #, а сценарии python будут использоваться в качестве расширений или плагинов для основного приложения.
Я использую Python, поэтому мне не нужно компилировать ни один из плагинов.