gpt4 book ai didi

c# - 在 C# 应用程序中嵌入 IronPython - urllib 上的导入错误

转载 作者:太空狗 更新时间:2023-10-30 01:11:34 25 4
gpt4 key购买 nike

我有一个 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'

(我从 this stackoverflow querstion and answer 得到的)
如果我在 Python 文件中省略了 import urllib 语句,一切正常。 (意味着它找到了 re 模块)
但是只要我添加 import urllibimport urllib2 我就会得到以下异常:

ImportException was unhandled
No module named urllib

所以不知何故它找不到 urllib。我检查了 IronPython lib 文件夹,urllib 和 urllib 2 肯定在那里。当我在 C# 代码中导入 urllib 时,会引发相同的异常。 (engine.ImportModule("urllib");)

有什么想法吗?
我想在 python 代码中而不是在 C# 代码中管理导入。
(所以我想避免这样的事情:engine.ImportModule("urllib");)

编辑:关于我实际要用它做什么的一些额外信息(也许有人有其他选择):
我将有一个主 C# 应用程序,python 脚本将用作主应用程序的扩展或插件。
我正在使用 Python,因此我不需要编译任何插件。

最佳答案

我相信交互式控制台中 sys.path 中的“Lib”实际上是在 ipy.exe 中完成的——嵌入时您必须手动添加路径。引擎或运行时都有一个“SetSourcePaths”(或类似的)方法,可让您执行此操作。

关于c# - 在 C# 应用程序中嵌入 IronPython - urllib 上的导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2224167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com