在C#应用程序中嵌入IronPython-在urllib上导入错误__init__(self,x):自我。x=xdefgetVal(self):返回自我。xdef__str__(self):return"instanceofAwithvalue'%s'"%(self.getVal())我还有一个简单的C#控制台项目,代码如下:engine=Python.CreateEngine();ScriptSourcesource=engine.CreateScriptSourceFromFile("test.py");ScriptScope作用域=engine.CreateScope();ObjectOperationsop=engine.Operations;来源.执行(范围);//类对象创建objectklaz=scope.GetVariable("A");//获取类对象objectinstance=op.Call(klaz,"blablawaarde");//创建实例对象method=op.GetMember(instance,"getVal");//获取一个方法stringresult=(string)op.Call(method);//调用方法并获取结果(9)Console.WriteLine("Result:"+result);//output:'Result:blablawaarde'(我从这个stackoverflow问题中得到了这个问题和答案)如果我在Python文件中省略了importurllib语句,一切正常(意味着找到re模块)但是,只要我添加importurllib或importurllib2我就会收到以下异常:ImportException未处理Nomodulenamedurllib所以它不知何故找不到urllib。我检查了IronPythonlib文件夹,urllib和urllib2肯定在那里。当我在C#代码中导入urllib时,会引发相同的异常。(engine.ImportModule("urllib");)有什么想法吗?我想在python代码中管理导入,而不是在C#代码中。(所以我想避免这样的事情:engine.ImportModule("urllib");)编辑:关于我实际要使用的东西的一些额外信息(也许有人有另一个选择):主C#应用程序,用作主应用程序扩展或插件的python脚本。我正在使用Python,所以我不需要编译任何插件。我面临着同样的问题。按照“TomE's”的建议,在对fuzzyman回复的评论中,我成功地解决了这个问题。问题似乎是它无法解析urllib.py的位置。我们需要设置它。您可以查看下面的链接以获取问题和答案。我相信从交互式控制台进入sys.path的“Lib”实际上是在ipy.exe中完成的——您必须在嵌入时手动添加路径。引擎或运行时具有允许您执行此操作的“SetSourcePaths”(或类似)方法。您导入的CPython版本必须与您的IronPython版本匹配。IronPython2.0使用CPythonv2.5,IronPython2.6使用v2.6。试试看:以上是C#学习教程:在C#应用中嵌入IronPython-导入urllib上的错误全部内容分享,如果对大家有用,需要详细了解C#学习教程,希望大家多多付出注意它-importsyssys.path.append(r'c:python26lib')#调整到你安装的任何版本的CPython。importurllib如有转载请注明出处:
