我的一个应用程序中有一个Ironpython环境.在这种环境中,我想访问由接口表示的对象的某些方法.但是我想让Ironpython只能访问接口导出的那些方法. 我可以做到这一点: ITheInterface obj = (ITheInterface)origObj; sc.SetVariable("obj", obj); 其中sc是范围,origobj是实现Itheinterface和Itheinterface的类的实例...嗯...接口. 但我仍然可以访问未通过itheinterface导出的ORIGOBJ实例的公共方法. 我如何仅限于Ironpython对接口导出的那些方法的访问? 解决方案 这样做的原因是Ironpython基于对象的运行时类型进行所有调用.要隐藏不需要的方法,请创建一个具有ITHEINTERFACE参考的类(TheInterFaceWrapper),但仅通过转发到适当的方法来实现接口.这样,运行时类型没有任何额外的方法.
以下是关于 ironpython 的编程技术问答
我想为我说的话提供资源,但我只是没有它们,这是我听到的. 一位编程教授告诉我,在某些特定项目中,对.Net vs python进行了一些软件基准,它给出了5:8的关系.那是他支持Python的论点,没有比.net慢得多 在这里,我想尝试Ironpython,因为我可以将我最了解的网络框架与我最喜欢的语言(python)相结合,我想知道程序的速度python中的asp.net与vb.net或c#的ASP.NET中的程序速度.是否有任何软件基准? 另外,与其他.NET语言相比,铁皮的速度不应该是相似的,因为Ironpython与Python不同,必须编译为.NET中间代码?有人可以在这些问题上启发我吗? 问候 解决方案 以下是两个有趣的链接,与Ironpython,Cpython和C#(等)之间的比较(等): CPython vs C# (Mono) benchmarks,基于网站上详细介绍的几个程序. cpython vs Ironpython 显
据此: ironpython(用于.net的Python)比同一台机器上的常规Python(Cpython)快.为什么是这样?我认为编译的C代码总是比等效的CLI字节码更快. 解决方案 Python代码不会被编译为C,Python本身是用C编写的,并解释了Python Bytecode. CIL被编译为机器代码,这就是为什么您在使用Ironpython时会看到更好的性能. 其他解决方案 您是对的,C速度更快.这就是为什么在这些结果中,cpython在词典上的速度是几乎纯C的两倍.另一方面,python代码未编译,这是解释的. Cpython中的功能调用非常慢. 但另一方面: TryRaiseExcept: +4478.9% 现在,Ironpython遇到了可怕的错误. 然后,有一个pypy项目,其中一个目标是恰当的编译器.甚至还有python的子集,称为rpython(还原python),可以静态编译.当然,哪个是 lot 更快. 其他解决方
在文档中说"源"可以是str或ast对象 试图编译我的AST root时: dl = compile(newRoot, '', 'eval') 我得到这个例外: expected str, got Module 我正在使用ironpython的最后版本. 有一个想法为什么这不起作用?我发现的所有例子似乎都没有问题. 有能力编译AST对象吗? 谢谢!!!! pd:我发现了这个问题,但似乎没有活动:/workitem/32526 解决方案 首先,Ironpython不支持此. 实际上很难在Ironpython中支持(我不知道直到今天需要得到支持). Ironpython的_ast模块是围绕其AST的包装器,目前仅实现Ironpython ast => cpython ast的转换,但不反向.这是相当(老实说,非常乏味的)工作,所以我不确定它何时会得到修复. 如果有一个受欢迎的程序或库是因为这样而破坏了优先列
好吧...我正在尝试将我在C#声明的对象传递给使用Ironpython的Python文件. 所以这就是我的想法: C#类: public class ParamObj { private string Obj_String; private int Obj_Int; public ParamObj(string lObjS, string lObjI) { Obj_String = lObjS; Obj_Int = lObjI; } public string getString() { return Obj_String; } public int getInt() { return Obj_Int; } public setString(string lStr) { Obj_String = lStr; }
我的目标是将Python连接到.NET以进行一个过程.我正在使用Ironpython. Python中的一部分涉及一些我使用Pandas库的计算. 有没有办法连接铁皮和熊猫? 我看到使用Ironpython,我可以访问所有基本的Python功能.如何将其扩展为访问第三方功能/软件包(例如这里的熊猫)? 解决方案 简短答案:不. 更长的答案:据我所知,Tere无法以默认的Python方式将C-Libraries与Ironpython集成.由于Pandas/Numpy使用大量的C代码,这是一种示例. 我们使用 python.net.net 为此任务 - 我们基本上将Python解释器嵌入.NET并检索我们的计算结果.这效果很好,并避免了由于Ironpython引起的问题.此外,"托管"的Python过程是100%本地的,因此不会出现库问题. 子流程可能存在一些问题,因为该过程是一个守护程序,但是可以绕过它们.
我们可以使用铁python在.NET空间中加载PANDAS DataFrame吗?如果没有 解决方案 不,Pandas与Cpython息息相关.就像您说的那样,最好的选择是用大熊猫在Cpython进行分析,并将结果导出到CSV. . 其他解决方案 关于选项,包括序列化: 我仍在研究类似情况 - 我们想处理Python中的数据,然后在C#中使用结果.我们的要求是(最好是)将Python Part平台独立保持独立,以便我们可以在Linux或Windows上运行数字. 长话短说,我们决定使用消息包使用二进制序列化/避难所:/a> 我们将数据框架值转换为列表,然后序列化到文件: import msgpack as mp data_as_list = df.values.tolist() mp.pack(data_as_list, open("d:\\msgpack1.mp",'wb')) 然后,在C#侧,我们使用.NET实现MessagePack来估算数据:
我是Ironpython的新手.感谢您的帮助和耐心. 我从 http://ironpython.net/中安装了Ironpython 2.7. 我还安装了Python 2.7.6和Anaconda. 我尝试了以下解决方案,但它不起作用. 安装python套件 - ironpython 我想知道Ironpython可以直接使用Anaconda安装的模块吗? 我尝试安装的软件包是numpy,scipy,pandas,sklearn.我看到2012年的一份文件指出,Ironpython不支持Sklearn.仍然是这样吗? 谢谢. 解决方案 取决于Ironpython官方网站您可以按照以下步骤 进行 step1 将Ironpython安装的路径添加到系统路径 step2 运行CMD作为管理员并键入以下命令 ipy -X:Frames -m ensurepip 现在您可以安装所有操作,您只需按下命令 添加任何软件包 ipy
我希望在Ironpython中加载.net dll. 但是.NET DLL中的静态函数之一,具有一些命名和可选的参数. 喜欢,绘制(重量:W,高度:H,区域= 1) 我只能使用完整的参数? 解决方案 命名和可选参数得到了充分支持. .新的C#语法映射到与旧VB支持的同一基础元数据. 用于调用您使用f(x = 42),这是python的命名参数语法.对于可选参数,您只需将它们排除在外即可.在您的示例情况下,您可能会绘制(重量,高度)并将区域排除在外.或者,您可以将重量和高度称为命名参数,然后将区域排除在外. Ironpython寻找的基础.NET元数据是可选的attribute或DefaultParametervalueAttribute.对于可选,我们通过默认值(t)传递,除非类型为对象,在这种情况下,我们会传递丢失.这通常与反射如何称为这些API. 其他解决方案 AS 这个问题说,新命名的论点说. Ironpython不支持NET(将命名的
我试图用Ironpython和Numpy编写一些称为.NET组件的代码. 版本信息: numpy-2.0.0-1 Scipy-1.0.0-2 Ironpython 2.7.1 我根据此处给出的说明安装了scipy和numpy: http://www.therquecn.com/repo/repo/.iron/ /p> 当我尝试使用ipy64.exe运行时,我会得到以下内容: Failed while initializing NpyCoreApi: BadImageFormatException:An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000 B) NumpyDotNet stack trace: at NumpyDotNet.NpyCoreApi.GetNativeTypeInfo(Int32& intSize,
Ironpython 2.6, Python 2.6.5, numpy, Scipy import sys sys.path.append(r'D:\Python26\dll') sys.path.append(r'D:\Python26\Lib') sys.path.append(r'D:\Python26\Lib\site-packages') » import numpy Traceback (most recent call last): File "", line 1, in File "D:\Python26\Lib\site-packages\numpy\__init__.py", line 132, in File "D:\Python26\Lib\site-packages\numpy\add_newdocs.py", line 9, in File "D:\Python26\Lib\site-packages\numpy\lib\__in
免责声明 - 我对Python不熟悉.我是C#开发人员,他编写了使用Ironpython执行Python脚本(由他人撰写)的应用程序.到目前为止,这些脚本只需要使用import math,但是我们的一位用户要求该应用程序支持Numpy. 我已经在我的PC上安装了Numpy(使用'numpy-1.9.2-win32-superpack-python2.7.exe'文件),该文件在\ lib \ site-packages下创建了一个numpy文件夹.我已经写了一个两行Python脚本来测试Numpy可以访问: - import numpy as np x = np.array([1,2]) 我从c#内运行脚本: - var engine = Python.CreateEngine(); engine.SetSearchPaths(new Collection(new[] { @"C:\Python27", @"C:\Python27\
从IPY控制台我可以 import ironclad import numpy 没问题. 但是,当我尝试使用嵌入式解释器进行相同的导入时,numpy导入失败.我的Python引擎是这样的: public PyEngine() { //Frames option needed to use sys.__getframe //used in Numpy and others. Dictionary opts = new Dictionary(); opts["Frames"] = ScriptingRuntimeHelpers.True; engine = Python.CreateEngine(opts); scope = engine.CreateScope(); runti
我有一个python库,我试图通过ironpython(v2.7 rc1 [2.7.0.30])调用从C#应用程序使用.图书馆非常广泛地使用numpy和scipy,确实可以使用 scipy and numpy for .net 当使用IPY从命令行进行运行时: ipy.exe -X:Frames file_from_lib_importing_numpy.py 但是,当我使用以下代码从C#调用Ironpython时,会抛出一个例外: ImportException "No module named mtrand" at Microsoft.Scripting.Runtime.LightExceptions.CheckAndThrow(Object value) at IronPython.Runtime.Operations.PythonOps.ImportStar(CodeContext context, String fullName, Int32 lev
我认为这是以前最受欢迎的方法: https://pytools.codeplex.com/wikipage?title = numpy%20和%20scipy%20 for%20.net 但不再存在此链接: /p> 我最近在GitHub上找到了一个克隆的克隆,并在GitHub上找到了Ironpkg-1.0.0.py的克隆.但是 http://www.therought.com/repo/repo/repo/.iron/.iron/鸡蛋/索引依赖性.txt 不再存在于互联网中(我搜索过它,但没有找到它) 开始使用.net的Scipy 1.)Ironpython 下载并安装Ironpython 2.7,这将需要.NET v4.0. 2.)修改路径 在路径上添加安装位置,通常是: C:\ Program File \ Ironpython 2.7 但是在64位Windows系统上是: C:\ Program File(X86)\ Ironpyt
我正在尝试做一些看起来很简单的事情,并且属于标准Python的范围.以下功能采用集合的集合,并返回所有包含在两个或多个集中的项目. 为此,虽然集合的集合不是空的,但它只是从集合中弹出一个集合,将其与其余集合相交,并更新一组属于这些交叉点之一的项目. def cross_intersections(sets): in_two = set() sets_copy = copy(sets) while sets_copy: comp = sets_copy.pop() for each in sets_copy: new = comp & each print new, # Print statements to show that these references exist print in_two in_two
我试图使用ironpython通过c#.net运行Python类,而Python类导入的几个模块为: import collections import nltk.classify.util 为了在运行Ironpython时导入这些,我正在使用 getSearchPath ScriptEngine 的收集将路径添加到Python库的位置,因此: ICollection paths = pyEngine.GetSearchPaths(); string dir = @"C:\Python27\Lib\"; paths.Add(dir); string dir2 = @"C:\Python27\Lib\site-packages\nltk\classify\"; paths.Add(dir2); pyEngine.SetSearchPaths(paths); 这似乎对 collections 模块不错,但 nltk.classify.util ,我在调用s
我希望能够使用自然语言(例如"下周五","每个工作日")输入日期(包括重复日期).非常喜欢 http://todoist.com/help/help/timeinsert 我找到了这篇文章仅提供一个解决方案我并不完全满意.我以为我会复活这个问题,然后看到:还有其他.NET库进行这种日期解析吗? 解决方案 我知道这不是一个最佳解决方案,但您也可以尝试将 datejs 库移植到.net 它处理今天的事情;明天; 2008年7月;下周五;去年四月; 2004.08.07; 2005年6月4日;晚上8:15; 22:30:45; +5年 其他解决方案 我不知道您今天可以使用的框架可以使用的任何东西,但是如果您满足于与以后的零件一起玩,可以查看奥斯陆,并使您的自己的文字DSL. 本文展示了如何准确地做您要做的事情: http://www.infoq.com/articles/article -language-date-dsl-oslo 其他解决方案