标签: ironpython

如何使用NGEN的二进制文件安装IronPython 2.0?

有谁知道如何使用MSI包安装带有NGEN的二进制文件的IronPython 2.0?该负责人IronPython的网页说,NGEN选项将大大提高启动时间,但由于某种原因,它不是默认启用的.它实际上并没有说明你需要传递哪些MSI参数来启用它,我在网站上找不到文档页面,所以我希望有人知道.(澄清:我正在进行静默安装以分发到多台机器,所以我正在寻找命令行参数,谢谢)

我问这个是因为一个简单的"hello world"脚本的开始时间在我的笔记本电脑上大约5-6秒,2 + ghz Intel Core 2 Duo w/4gig.每次跑步都会发生这种情况.我希望这个NGEN选项可以解决这个问题,因为它现在很慢,几乎感觉我正在使用编译语言.

更新:srivatsn有正确的答案使用NGENDLLS = True命令行参数.

为了将来参考,这里是我用于静默安装IronPython 2.0的完整MSI命令行:

msiexec /qn /i "IronPython.msi" NGENDLLS=True
Run Code Online (Sandbox Code Playgroud)

感谢Igal,但我实际上正在进行静默安装(通过msiexec/qn),以便集中分发到多台机器.有谁知道命令行参数(非UI)启用NGEN选项?

.net ironpython

2
推荐指数
1
解决办法
785
查看次数

你真的可以使用Visual Studio 2008 IDE在Python中编码吗?

我有一个朋友,我正在努力教授如何编程.他来自一个非常基本的PHP背景,出于某种原因是ANTI C#,我想因为他的一些PHP圈子谴责来自微软的任何东西.

无论如何 - 我已经告诉他可以在VS2008 IDE中使用Ruby或Python,因为我已经在某处读过这是可能的.

但我很想知道.它是否真的那么实用,你可以在VS2008中使用Python做一切,你可以用C#或VB.net做.

我想没有开始辩论......我想知道你是否是使用VS IDE而不是VB.net或C#的开发人员,那么请根据你的经验给出答案.

如果您(像我一样)是VB.net或C#开发人员,请不要发布推测或主观答案.这是一个严肃的问题,我不希望它被视为主观的....

非常感谢你.

更新

到目前为止,我们已经确定IronPython是适合这项工作的正确工具.

现在它真的有多实用?

Mono例如在Linux中运行C#代码,但是......曾试图使用它吗?根本不实用,需要进行大量的代码重构,不支持.net v3.5等等......

python ironpython visual-studio

2
推荐指数
1
解决办法
476
查看次数

为什么C#开发人员应该学习IronPython?

我们都知道C#是一种静态语言,而Python是一种动态语言.但是我想知道Python有什么功能,c#没有.另外,在同一个应用程序中使用带有c#的IronPython是明智/有益的吗?

在我试图说服我的老板使用IronPython之前,我还应该重点学习哪些要点?

c# architecture ironpython

2
推荐指数
2
解决办法
962
查看次数

IronPython是否允许我在C#项目中使用Python而不添加新的部署要求?

我查看了IronPython网站并完成了各种Google搜索以及搜索SO的答案,但我仍然不确定.

我想在C#ASP.NET MVC项目中使用Python,这样一旦项目部署完毕,我就不需要在托管应用程序的服务器上运行Python.

我认为这就是IronPython所做的,但我不确定,因为描述看起来并不是非常具体(或者我只是一个史诗般的菜鸟).

我可以在C#中定义一个基本上包含Python脚本的对象,对吧?也许这一切似乎都很好,这就是为什么我要问,这里有一个问题吗?

c# python asp.net-mvc ironpython

2
推荐指数
1
解决办法
284
查看次数

IronPython DLR; 将参数传递给编译代码?

我目前正在使用DLR创建和执行一个简单的python计算:

ScriptRuntime runtime = Python.CreateRuntime();
ScriptEngine engine = runtime.GetEngine("py");

MemoryStream ms = new MemoryStream();
runtime.IO.SetOutput(ms, new StreamWriter(ms));

ScriptSource ss = engine.CreateScriptSourceFromString("print 1+1", SourceCodeKind.InteractiveCode);

CompiledCode cc = ss.Compile();
cc.Execute();

int length = (int)ms.Length;
Byte[] bytes = new Byte[length];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(bytes, 0, (int)ms.Length);
string result = Encoding.GetEncoding("utf-8").GetString(bytes, 0, (int)ms.Length);

Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

哪个打印'2'到控制台,但;

我想得到1 + 1的结果,而不必打印它(因为这似乎是一个昂贵的操作).我将cc.Execute()的结果赋值为null.有没有其他方法可以从Execute()获得结果变量?

我也试图找到一种传递参数的方法,即结果是arg1 + arg2并且不知道如何做到这一点; Execute唯一的其他重载将ScriptScope作为参数,我以前从未使用过python.有人可以帮忙吗?

[编辑]这两个问题的答案:( Desco被接受为指向正确的方向)

ScriptEngine py = Python.CreateEngine();
ScriptScope pys = py.CreateScope();

ScriptSource src = py.CreateScriptSourceFromString("a+b");
CompiledCode compiled = src.Compile();

pys.SetVariable("a", 1);
pys.SetVariable("b", 1);
var …
Run Code Online (Sandbox Code Playgroud)

.net c# ironpython dynamic-language-runtime

2
推荐指数
1
解决办法
1973
查看次数

来自IronPython的表达式树

我使用此代码使用IronPython执行python表达式.

    ScriptEngine engine = Python.CreateEngine();
    ScriptScope scope = engine.CreateScope();      
    scope.SetVariable("m", mobject);
    string code = "m.ID > 5 and m.ID < 10";
    ScriptSource source = 
engine.CreateScriptSourceFromString(code, SourceCodeKind.Expression);
    source.Execute(scope);
Run Code Online (Sandbox Code Playgroud)

有没有办法将生成的表达式树作为c#对象,例如BlockExpression

linq ironpython expression-trees

2
推荐指数
1
解决办法
1209
查看次数

在Ubuntu上以python导入dll

我在Ubuntu安装的服务器上使用python 2.6.5。

我需要为我们的应用程序集成一个API,在这种情况下,我需要使用API​​提供者提供给我的DLL。他们约API集成的代码示例是用Visual Basic编写...我做了对谷歌搜索,发现使用的一些例子ctypes,我尝试使用cdllpydll,这引起了以下错误......

OSError:/home//some.dll:无效的ELF标头

一种可能性是使用IronPython,但是我对Ironpython的了解不多,所以我不确定它是否可以完全满足我的需求。

是否有任何可用的模块可以让我在python上使用该dll(或我不喜欢的模块)。升级我的python版本很难吗?

python dll ubuntu ironpython

2
推荐指数
1
解决办法
5047
查看次数

在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<!!0,!!1>)'. ---> System.MissingMethodException: Method not found: '!!1[] Microsoft.Scripting.Utils.ArrayUtils.ConvertAll(!!0[], System.Func2)'. at IronPython.Runtime.PythonContext..ctor(ScriptDomainManager manager, IDictionary2 options) --- End of inner exception stack trace --- at Microsoft.Scripting.Runtime.LanguageConfiguration.LoadLanguageContext(ScriptDomainManager domainManager, Boolean& alreadyLoaded) at Microsoft.Scripting.Runtime.DlrConfiguration.LoadLanguageContext(ScriptDomainManager manager, LanguageConfiguration config) at Microsoft.Scripting.Runtime.DlrConfiguration.TryLoadLanguage(ScriptDomainManager manager, AssemblyQualifiedTypeName providerName, LanguageContext& language) at Microsoft.Scripting.Runtime.ScriptDomainManager.GetLanguageByTypeName(String providerAssemblyQualifiedTypeName) at Microsoft.Scripting.Hosting.ScriptRuntime.GetEngineByTypeName(String assemblyQualifiedTypeName) at IronPython.Hosting.Python.GetEngine(ScriptRuntime runtime) at …

.net c# python ironpython

2
推荐指数
1
解决办法
1782
查看次数

Python - 从不同包中的一个包创建类的对象

几天前我开始使用Python,我想我有一个非常基本的问题,我被卡住了.也许我没有在Python中正确地做到这一点,所以需要专家的一些建议:

我在一个包lib中有一个config.cfg和一个类测试,如下所示:

的Myproj/LIB /则pkg1 /的config.cfg

[api_config]
url = https://someapi.com/v1/
username=sumitk
Run Code Online (Sandbox Code Playgroud)

的Myproj/LIB /则pkg1/test.py

class test(object):

    def __init__(self, **kwargs):

        config = ConfigParser.ConfigParser()
        config.read('config.cfg')
        print config.get('api_config', 'username') 
          #just printing here but will be using this as a class variable

    def some other foos()..
Run Code Online (Sandbox Code Playgroud)

现在我想在另一个包中的其他模块中创建一个测试对象

的Myproj /示例/ useTest.py

from lib.pkg1.test import test

def temp(a, b, c):
    var = test()

def main():
    temp("","","")

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

运行useTest.py给我错误:

...
print config.get('api_config', 'username')
File "C:\Python27\lib\ConfigParser.py", line 607, in get
     raise NoSectionError(section)
ConfigParser.NoSectionError: No section: 'api_config' …
Run Code Online (Sandbox Code Playgroud)

python ironpython python-2.7 python-3.x

2
推荐指数
1
解决办法
266
查看次数

具有多个STA线程的Wpf应用程序仍会阻止用户界面

不久前,我们使用IronPython将Python脚本添加到Wpf应用程序中.起初,它只是"奴隶",因为例如按钮点击调用脚本然后只是运行完成将控制权返回给Wpf.后来我们添加了'master'脚本:脚本在它自己的线程中运行,并控制应用程序的其余部分.这是相当具有挑战性的,但过了一段时间,在现有的SO内容的帮助下,我们看起来很有效.从来没有真正使用它,直到现在,不幸的是事实证明它不能正常工作.核心原因是虽然有两个单独的STA线程(主要的Wpf一个和一个脚本),因此两个不同的Dispatcher实例,主线程似乎被阻止,因为脚本线程在循环中等待主线程完成(响应在脚本线程上处理的按钮单击并在主线程上启动事件).使用具有单独ui窗口的两个线程的全部意义当然不会发生.到底是怎么回事?

更新它是可重复使用最少的代码,所以我链接到它而不是在这里发布伪代码.在创建代码时,我发现当脚本线程创建的窗口未嵌入(设置MainWindow.hostedWin = false)时,不会发生死锁,并且一切都按预期运行.

回应评论所以有3个关注的线程发挥作用.我们称它们为Python,Ui和Process.Python启动Process并等待它完成.进程调用在Ui上调用.在那一点上不应该做任何事情:毕竟,它是阻塞的Python,而不是Ui,而这个结构的重点是Ui不应该与Python交互.好吧,除了它确实以某种方式.哪个是罪魁祸首.在僵局中,Ui坐在那里,PresentationFramework.dll!System.Windows.Interop.HwndHost.OnWindowPositionChanged(System.Windows.Rect rcBoundingBox) + 0x82 bytes而Process坐在WindowsBase.dll!System.Windows.Threading.DispatcherOperation.DispatcherOperationEvent.WaitOne() + 0x2f bytes那里,而Python就在Thread.Sleep.

这里发生了什么,以及如何解决它?

c# wpf ironpython dispatcher sta

2
推荐指数
1
解决办法
1338
查看次数