Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在IronPyton中导入数学失败_C#_Math_Ironpython - Fatal编程技术网

C# 在IronPyton中导入数学失败

C# 在IronPyton中导入数学失败,c#,math,ironpython,C#,Math,Ironpython,我正在尝试在C#中使用IronPython日志函数。想法是用户将编写一个数学脚本,这个脚本将被评估,答案将显示在用户界面中。当我把这个方法用于简单的数学(加法、减法等)时,效果很好。当我需要使用log函数时,我尝试导入数学模块,但失败了。我的代码是: public double Calculate(string script) { ScriptEngine engine = Python.CreateEngine(); ScriptSource source = engine.C

我正在尝试在C#中使用IronPython日志函数。想法是用户将编写一个数学脚本,这个脚本将被评估,答案将显示在用户界面中。当我把这个方法用于简单的数学(加法、减法等)时,效果很好。当我需要使用log函数时,我尝试导入数学模块,但失败了。我的代码是:

public double Calculate(string script)
{
    ScriptEngine engine = Python.CreateEngine();
    ScriptSource source = engine.CreateScriptSourceFromString("import math" + System.Environment.NewLine + script, SourceCodeKind.AutoDetect);
    return source.Execute<double>();
}
public双重计算(字符串脚本)
{
ScriptEngine=Python.CreateEngine();
ScriptSource=engine.CreateScriptSourceFromString(“导入数学”+System.Environment.NewLine+script,SourceCodeKind.AutoDetect);
返回source.Execute();
}
当我运行这段代码时,我得到异常“IronPython.Runtime.Exceptions.ImportException”没有名为math
的模块。
我将方法称为
Calculate(“数学日志(10)”)`


我是否缺少任何导入或dll?

Python区分大小写,并且没有名为just
Math
的类。。仅
System.Math

因此,要获得所需的内容,需要使用以下导入语句:
fromsystemimportmath
importsystem.Math as Math


两者都会得到相同的结果…

Python区分大小写,并且没有名为just
Math
的类。。仅
System.Math

因此,要获得所需的内容,需要使用以下导入语句:
fromsystemimportmath
importsystem.Math as Math


两者都会得到相同的结果…

我试图复制您的问题,但是我还没有安装IronPython,所以我从安装了最新的稳定版本(2.7.4)。我不确定你是否使用相同的版本

创建解决方案时,我知道我需要添加一些引用。我的猜测是,这就是你“邪恶”的根源

我添加了安装IronPython时附带的参考资料
'IronPython'
'Microsoft.Scripting'
。确切的版本是v4.0.30319(IronPython和Microsoft脚本)

因此,我的Windows窗体应用程序有一个文本框和一个按钮(毕竟这只是一个测试),我复制了你的示例方法Calculate,为了确保我们有相同的方法,下面是我的版本:

 public double Calculate(string script)
 {
   ScriptEngine engine = Python.CreateEngine();
   ScriptSource source = engine.CreateScriptSourceFromString("import math" + Environment.NewLine + script, Microsoft.Scripting.SourceCodeKind.AutoDetect);
   return source.Execute<double>();
 }
在执行我的应用程序时,程序不会显示与您相同的错误,但它会显示我在计算log(10)时所期望的结果(假设您正在计算自然对数)。我的文本框包含:

Outcome of log(10): 2,30258509299405
所以这里只有一个提示,请尝试找出是否安装了不同版本的ScriptEngine(我知道除了Microsoft.Scripting之外还有其他版本),并查看解决方案中的参考资料


希望有帮助

我试图复制您的问题,但是我还没有安装IronPython,所以我从安装了最新的稳定版本(2.7.4)。我不确定你是否使用相同的版本

创建解决方案时,我知道我需要添加一些引用。我的猜测是,这就是你“邪恶”的根源

我添加了安装IronPython时附带的参考资料
'IronPython'
'Microsoft.Scripting'
。确切的版本是v4.0.30319(IronPython和Microsoft脚本)

因此,我的Windows窗体应用程序有一个文本框和一个按钮(毕竟这只是一个测试),我复制了你的示例方法Calculate,为了确保我们有相同的方法,下面是我的版本:

 public double Calculate(string script)
 {
   ScriptEngine engine = Python.CreateEngine();
   ScriptSource source = engine.CreateScriptSourceFromString("import math" + Environment.NewLine + script, Microsoft.Scripting.SourceCodeKind.AutoDetect);
   return source.Execute<double>();
 }
在执行我的应用程序时,程序不会显示与您相同的错误,但它会显示我在计算log(10)时所期望的结果(假设您正在计算自然对数)。我的文本框包含:

Outcome of log(10): 2,30258509299405
所以这里只有一个提示,请尝试找出是否安装了不同版本的ScriptEngine(我知道除了Microsoft.Scripting之外还有其他版本),并查看解决方案中的参考资料


希望有帮助

我想,如果你导入了数学,你可以只使用
Calculate(“log(10)”)
而不使用
math
。谢谢哈姆雷特,我也试过了。你的帖子不是真正的代码。。。您的帖子包含带有小写字母m的“导入数学”,当使用“导入数学”(大写字母m)时,您收到的错误将弹出。因此,基本上,您粘贴的代码实际上是有效的:)我在旧版本的IronPython和Microsoft.Script以及Microsoft.Dynamic DLL中遇到了使用小写字母“m”的math异常。我在数学中使用小写的m,因为我想使用Python数学函数。对于CSharp数学函数,您需要使用“import System.math”。如果你只使用“导入数学”,你会一直遇到异常。我想,如果你导入数学,你可以只使用
Calculate(“log(10)”)
而不使用
Math
。谢谢哈姆雷特,我也试过了。你的帖子不是真正的代码。。。您的帖子包含带有小写字母m的“导入数学”,当使用“导入数学”(大写字母m)时,您收到的错误将弹出。因此,基本上,您粘贴的代码实际上是有效的:)我在旧版本的IronPython和Microsoft.Script以及Microsoft.Dynamic DLL中遇到了使用小写字母“m”的math异常。我在数学中使用小写的m,因为我想使用Python数学函数。对于CSharp数学函数,您需要使用“import System.math”。如果只使用“import Math”,则会一直出现异常。谢谢Shlomi,我使用的是System.Math,当我将方法调用为System.Math.Log()时,它运行良好。我想使用Python风格,因为我们的用户更习惯于以math.Log()而不是System.math.Log()的形式编写。不过,这个问题现在已经解决了,因为我现在使用的是“从系统导入数学”,现在用户只需为要计算的脚本编写Log()。感谢您的回复,这非常有帮助,因此我将其标记为答案。Shlomi表示歉意,虽然您的答案非常有帮助,但我相信RvdV79的答案更适合我的问题