有没有一种方法可以以更好的性能效果来调用C#脚本文件?
我目前正在调用C脚本文件( http://www.csscript.net )使用此方法在Visual Studio 2010中的应用: var script = new AsmHelper(CSScript.Load( @"C:\temp\CSScriptTest\CSScriptTest\cstest.cs")); script.Invoke("*.LoopTest"); ,但我注意到,使用此方法,其性能大约是称为类似的Ironpython脚本所需的两倍: var ironPythonRuntime = Python.CreateRuntime(); dynamic loadPython = ironPythonRuntime.UseFile( @"C:\temp\IronPythonTest\IronPythonTest\pytest.py"); loadPython.LoopTest(); 是
2 2024-04-26
编程技术问答社区
从c#运行python代码不返回值
美好的一天! 建议我尝试一种允许C#运行Python代码的方法,然后将Python输出发送到可以使用的C#程序. 请参阅链接以获取示例:我如何运行python C#? 的脚本 我的实现: private void run_cmd() { ProcessStartInfo start = new ProcessStartInfo(); start.FileName = "Path\\To\\python.exe"; start.Arguments = "Path\\To\\Thing.py"; ; start.UseShellExecute = false; start.RedirectStandardOutput = true; using (Process pr
4 2024-04-26
编程技术问答社区
在使用IronPython和C#的情况下,是否可以在运行前检查Python脚本的语法?
由于我解决了检查语法的问题,因此我将详细说明我的做法.我将以自己的实现为例. 首先我使用了什么以及如何使用它? 我使用了2.6版以来Ironpython中可用的ast模块(我使用2.7.4(1)). ast模块构建了补充到模块的代码的抽象语法树(2)(简称为简短).这个功能使我可以知道脚本是否具有良好的语法.因此,我知道该模块是否可以成功创建树,这意味着语法还可以,如果发生异常,则意味着不正常. 我是如何实施的? 实施并不是最简单的,但是我感谢 pawel jasinski 我已经很快解决了某些错误感谢他. 我将讨论代码的两个部分.首先,我将讨论我从C#代码中称为的Python部分. python: import System import sys sys.path.append(r"C:\Program Files (x86)\IronPython 2.7\Lib") #This reference was vital, without it
4 2024-04-25
编程技术问答社区
用动态关键字从C#运行IronPython对象
我有以下Ironpython代码. class Hello: def __init__(self): pass def add(self, x, y): return (x+y) 我可以使用以下C#代码使用Ironpython代码. static void Main() { string source = GetSourceCode("ipyth.py"); Engine engine = new Engine(source); ObjectOperations ops = engine._engine.Operations; bool result = engine.Execute(); if (!result) { Console.WriteLine("Executing Python code failed!"); } else
0 2024-04-25
编程技术问答社区
当py脚本在c#中运行时,"没有名为fcntl的模块",但在windows命令行中可以运行。
我正在调用一个使用imaplib.py的Python脚本,并获取" NO模块名为FCNTL"错误.从搜索中,我发现此模块仅在UNIX中可用,因此我想知道PY脚本是否对其在下面运行的操作系统感到困惑.同样,脚本在直接从python目录运行的Windows下正常工作. var engine = Python.CreateEngine(); ScriptScope scope = engine.CreateScope(); var ops = engine.Operations; var script = engine.CreateScriptSourceFromFile("PyTest.py"); CompiledCode code = script.Compile(); //string scode = script.GetCode(); code.Execute(scope); 和最小PY脚本触发它.请注意,评论导入im
4 2024-04-25
编程技术问答社区
拒绝IronPython访问不属于接口的公共函数?
我的一个应用程序中有一个Ironpython环境.在这种环境中,我想访问由接口表示的对象的某些方法.但是我想让Ironpython只能访问接口导出的那些方法. 我可以做到这一点: ITheInterface obj = (ITheInterface)origObj; sc.SetVariable("obj", obj); 其中sc是范围,origobj是实现Itheinterface和Itheinterface的类的实例...嗯...接口. 但我仍然可以访问未通过itheinterface导出的ORIGOBJ实例的公共方法. 我如何仅限于Ironpython对接口导出的那些方法的访问? 解决方案 这样做的原因是Ironpython基于对象的运行时类型进行所有调用.要隐藏不需要的方法,请创建一个具有ITHEINTERFACE参考的类(TheInterFaceWrapper),但仅通过转发到适当的方法来实现接口.这样,运行时类型没有任何额外的方法.
14 2024-04-25
编程技术问答社区
如何使用iron python从Silverlight访问WPF类库。这可能吗?
我有一个班级库.我可以正常从铁python控制台访问该组件. 我的目标是创建一个使用Python脚本访问WPF类库的Silverlight类库.是否可以?还有其他方法可以实现这一目标或任何工作吗? 如果需要更多详细信息,我可以提供我现在正在做的事情的示例. 谢谢 解决方案 除非其代码与Silverlight库兼容,并且将针对Silverlight的代码兼容,否则您将无法使用类库.
0 2024-04-24
编程技术问答社区
如何通过使用命令从C#代码中运行Python脚本
我在本地计算机中有一个脚本文件(run_edr.py),当我使用" cmd"和以下命令运行它时,脚本可完美地工作.该脚本所需的参数更少,第一个参数是输入文档文件夹路径,第二个参数是存储输出文档的输出文件夹路径. 我的python命令, python run_edr.py -input_path "C:\Users\aslamm5165\Downloads\EDRCODE_ArgParser\files\EDR" -output_path "C:\Users\aslamm5165\Downloads\test" -site_name "a" -site_address "b" -site_city "c" -site_county "d" -site_state "e" -site_type "1" 我尝试过下面的尝试,但不起作用,我在哪里做错了? ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(null);
6 2024-04-24
编程技术问答社区
IronPython主机缓存导入模块?
我将Ironpython嵌入我的应用中.一切都很好,但是我发现当我使用CreateScriptSourceFromFile执行文件时,Ironpython似乎缓存了其他导入的模块. 例如,我有另一个文件,例如foo.py: foo = 'foo' 我使用Ironpython托管API执行bar.py: from foo import foo print foo 如果我更改bar.py,则在不退出主机应用程序的情况下,我可以看到我的更改已生效.但是,如果我编辑foo.py,那么我必须重新启动我的应用程序才能查看更改.我已经在选项中启用了Debug,但没有帮助. 请建议.非常感谢. 解决方案 是的,导入的模块由ScriptEngine实例缓存.如果要自动重新加载缓存模块,则必须创建一个新的引擎实例.当前无法禁用它,并且总是重新加载模块. 禁用缓存行为的选项并不是一个坏主意. 打开一个问题,以便在雷达上.当然,补丁甚至更好.
0 2024-04-24
编程技术问答社区
如何在IronPython中对C#对象使用一个特定的接口
我有一个C#类,可以实现2个IEnumerable接口.如何从Ironpython访问任何一个接口? 我的班级: public class MyClass : IEnumerable, IEnumerable { IEnumerator IEnumerable.GetEnumerator() { return _lstTypeA.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return _lstTypeB.GetEnumerator(); } } 我在python中尝试了以下内容,但是尽管它没有错误运行,但它不会从iEnumerable接口中返回任何元素: x = MyClass() xA = clr.Convert(x, I
2 2024-04-23
编程技术问答社区
在C#应用程序中导入scikit
我正在尝试在C#(控制台)应用程序中导入Scikit-Learn.我正在使用Python工具进行视觉工作室和Ironpython 2.7.3. 我设法运行了一个外部python脚本,我还通过声明python路径来导入numpy:" c:\ python27 \ lib \ lib \ site-packages \" 但是,当涉及Scikit-Learn时,我会收到一条错误消息: Oops! We couldn't execute the script because of an exception: No module named _c heck_build ___________________________________________________________________________ Contents of C:\Python27\Lib\site-packages\sklearn\__check_build: setup.py
6 2024-04-23
编程技术问答社区
IronPython。改变SourceCodeKind.InteractiveCode的行为
我可以在C#中执行Ironpython: ScriptSource Source = PyEngine.CreateScriptSourceFromString(Code, SourceCodeKind.InteractiveCode); CompiledCode Compiled = Source.Compile(); Compiled.Execute(PyScope); 这意味着我可以执行A=1,然后可以执行A.然后,这将输出1. 有没有一种方法可以覆盖此行为,因此A将被重定向到C#功能,例如CustomPrinter在打印之前?我知道我可以按照 https://stackover.com/a/a/a/a/a/a/a/a/a/a/a/a/13871861/1444776572/a>,但我觉得应该有更好的方法. 编辑1 感谢您的回答,但我对自己的目标有些不清楚. 我知道我可以用PyEngine.Runtime.IO.SetOutput(stream,
0 2024-04-23
编程技术问答社区
IronPython/C# 我不能在脚本运行后重新打开一个串行端口
程序" Mission Planner"允许运行Python脚本以自定义程序的行为. "任务计划者"以自己的线程运行脚本.线程运行时,我可以选择按" thread.abort()""任务计划者"中的" thread.abort()"按钮.当我按此按钮时,脚本中止了,但是当我再次运行脚本时,我这次无法打开串行端口.我相信这是因为线程在关闭串行端口之前退出.有没有办法可靠地处理thread.abort()?或者,当我打开端口时处理这个问题会更好? 这是指向这是指向 Mission Planner程序 下面是我的python脚本. 注意:这是我脚本的简化版本,证明了我的问题.我的脚本旨在在后台运行,直到被中止为止. import clr clr.AddReference('System') from System import * serialPort = IO.Ports.SerialPort("COM3") serialPort.BaudRate = 9600 s
4 2024-04-23
编程技术问答社区
没有名为fcntl的模块
我试图使用Ironpython 2.7的Ironpython在.NET 4.0上执行此方法.我正在使用Windows 7 import os import re import nltk import urllib import xapian import sys def getData(url): try: html = urllib.urlopen(url) text = html.read() html.close() except: return "error" try: return nltk.clean_html(text) #takes the tokens except: return text c#代码: public static object Execute()
8 2024-04-23
编程技术问答社区
C#, IronPython, and Sympy: unicode_escape_decode()不需要参数。
我正在尝试创建一种静态方法,用于使用C#中的Ironpython在Synpy中简化数学表达式.我已经能够测试并确认执行Ironpython的简单python语句.问题是当我尝试运行下面的代码时,我会收到以下错误: unicode_escape_decode() takes no arguments (1 given) 我在线寻找解释,并设法找到了另一个有相同问题的用户,但似乎并没有解决: unicode_escape_decode()在f# 中运行Python时,没有参数错误 这是我的代码: public static MathExpression SimplifyExpression(MathExpression Input) { //Make sure the mathematics engine is initialized if (!MathEngine.IsInitialized()) throw new Except
10 2024-04-23
编程技术问答社区
在VisualStudio中创建IronPython项目时出错;"调用的目标抛出了异常"。
我有一个解决方案,该解决方案将在C#上内置一个GUI,我想在解决方案中创建一个Ironpython项目,该项目将从C#代码中调用,但我什至无法创建它. 我正在使用Codeplex和Ironpython 2.7 的Python工具 编辑:这是我在activitylog.xml 中找到的 System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Failed to load language 'IronPython 2.7.2.1': Method not found: '!!1[] Microsoft.Scripting.Utils.ArrayUtils.ConvertAll(!!0[], System.Func2
2 2024-04-23
编程技术问答社区
IronPython, Click Once, .NET 2.0 Error-thoughts?
我正在尝试推出测试应用程序,以测试一旦智能客户端应用程序纠正单击的可行性,该应用程序也使用嵌入Ironpython的规则引擎. 到目前为止,所有用户都在调用脚本引擎时会收到此错误(下). 我是否需要做一些特别的事情来强制部署铁皮和脚本组件?我认为这是自动的,因为它们是在我的项目中引用的. 在.NET 2.0中,这是不可行的吗? 想法? ************** Exception Text ************** System.MissingMethodException: Method not found: 'Void System.Reflection.Emit.DynamicMethod..ctor(System.String, System.Type, System.Type[], Boolean)'. at Microsoft.Scripting.Utils.Helpers.CreateDynamicMethod(String name,
10 2024-04-23
编程技术问答社区
在C#和CPython之间的快速和可扩展的RPC
我需要有关C#-CPYTHON集成的一些反馈,以进行科学应用. 场景如下:C#用于数据采集和可视化-CPYTHON用于使用多个和更改第三部分库来实现域特定任务的数据操作. 一般用例: C#代码从设备获取实时数据 c#代码将数据传递给cpython代码并要求详细说明 cpython代码做魔术 cpython代码通过结果返回C#代码 c#可视化WPF应用程序中的数据 C#和CPYTHON代码(项目1),3)和5))已经针对速度进行了优化. 要以方向传递的数据(项目2)和4)本质上是10e6 double的数组 (无需复杂的数据结构). 我想找到一个良好性能的接口解决方案(从1到5的速度) 并分离功能,这些功能也可以最大程度地减少客户端的开发(C#代码) 边. 实际上,两侧都在同一台计算机上运行,​​但我希望解决方案以扩展. 我尝试过的解决方案 - 问题: a)C# +在.NET上移植Python算法 - 太多代码无法编写/重写 在领域,缺乏专
14 2024-04-23
编程技术问答社区
KitchenPC和Ironpython
我试图使用Ironpython与KitchenPC合作. 我在此处使用数据库供应示例:我成功地引用和导入所有DLL及其名称空间: import clr clr.AddReference("System") from System import * from System.Reflection import * from System.Reflection import Assembly L4N = Assembly.LoadFrom('C://KitchenPC//DLL//log4net.dll') clr.AddReference(L4N) NU= Assembly.LoadFrom('C://KitchenPC//DLL//nunit.framework.dll') clr.AddReference(NU) LC= Assembly.LoadFrom('C://KitchenPC//DLL//Iesi.Collections.dll') clr.Ad
2 2024-04-23
编程技术问答社区
在嵌入式IronPython v2中获取最后的语句结果
Mike Stall的博客中的这篇文章指出 最后一个表达式结果被存储为全局变量"_",因此您可以像这样检索: object o = m_python.GetVariable("_"); 但是当前在V2范围中,执行后没有这样的变量,例如, scriptEngine.CreateScriptSourceFromString("a=1+2;a+1", SourceCodeKind.Statements); 有什么方法可以访问结果(a+1)而无需明确定义变量? 解决方案 我怀疑使用Ironpython 2您需要使用sourcecodekind.interactive. 我稍后再尝试一下,看看是否有效.
2 2024-04-23
编程技术问答社区