标签: ironpython

Iron Python:Iron Python有什么用处

我对python很感兴趣,但是我在.NET环境中工作,所以我正在研究Iron Python,并想知道它将用于什么.

你能写一个应用程序吗?或者是否为您的应用添加脚本语言?

你们是如何使用它的?

.net python ironpython dynamic-language-runtime

27
推荐指数
4
解决办法
1万
查看次数

Boo vs. IronPython

在看了这两个项目之后,似乎两者都很相似.两者都运行在CLI之上,两者都具有python样式语法,都使用.NET而不是标准的python库.

那么,它们之间的区别和各自的优势是什么?

ironpython boo

26
推荐指数
4
解决办法
6249
查看次数

作为基类一部分的Python装饰器不能用于装饰继承类中的成员函数

Python装饰器使用起来很有趣,但由于参数传递给装饰器的方式,我似乎已经碰壁了.这里我有一个装饰器被定义为基类的一部分(装饰器将访问类成员,因此它将需要self参数).

class SubSystem(object):
    def UpdateGUI(self, fun): #function decorator
        def wrapper(*args):
            self.updateGUIField(*args)
            return fun(*args)
        return wrapper

    def updateGUIField(self, name, value):
        if name in self.gui:
            if type(self.gui[name]) == System.Windows.Controls.CheckBox:
                self.gui[name].IsChecked = value #update checkbox on ui 
            elif type(self.gui[name]) == System.Windows.Controls.Slider:
                self.gui[name].Value = value # update slider on ui 

        ...
Run Code Online (Sandbox Code Playgroud)

我省略了其余的实现.现在这个类是将继承它的各种SubSystems的基类 - 一些继承的类需要使用UpdateGUI装饰器.

class DO(SubSystem):
    def getport(self, port):
        """Returns the value of Digital Output port "port"."""
        pass

    @SubSystem.UpdateGUI
    def setport(self, port, value):
        """Sets the value of Digital Output port "port"."""
        pass
Run Code Online (Sandbox Code Playgroud)

我再次省略了函数实现,因为它们不相关.

简而言之,问题是虽然我可以通过将其指定为SubSystem.UpdateGUI来从继承类访问基类中定义的装饰器,但在尝试使用它时我最终会得到此TypeError: …

python inheritance ironpython decorator

25
推荐指数
1
解决办法
8858
查看次数

ASP.NET MVC上的IronPython

有没有人尝试过使用IronPython的ASP.NET MVC?最近做了很多Python开发,在进入潜在的ASP.NET MVC项目时继续使用该语言会很不错.

我特别感兴趣的是利用LINQ等.NET功能来利用Python的动态方面,并想知道这是否可行.对于某些动态编程可能可行的另一条路径是C#4.0及其dynamic关键字.

思想,经历?

python linq asp.net-mvc ironpython dynamic

24
推荐指数
3
解决办法
1万
查看次数

使用python或ironpython访问mssql的最简单方法是什么?

我已经在我的个人计算机上运行了mssql 2005,我希望运行一些python脚本.我正在寻找一种方法来对数据进行一些非常简单的访问.我想运行一些select语句,处理数据并且可能让python保存带有结果的文本文件.

不幸的是,尽管我对python有点了解并且对数据库有点了解,但是我很难通过阅读来判断一个库是否符合我的要求.理想情况下,我想要的东西适用于其他版本的mssql,是免费的,许可允许商业使用,使用简单,可能与ironpython一起使用.

python sql-server ironpython

23
推荐指数
3
解决办法
3万
查看次数

Unity3D中的IronPython

我正在尝试使用IronPython作为Unity3D的外部脚本语言.IronPython执行所需的DLL在Assets\Plugins内部加载得很好.但是,当我尝试运行脚本时,我收到此错误:

PythonImportErrorException: No module named UnityEngine
IronPython.Modules.Builtin.__import__ (IronPython.Runtime.Calls.ICallerContext,string,object,object,object) <IL 0x0003b, 0x001cc>
(wrapper dynamic-method) object.__import__##5 (IronPython.Runtime.Calls.ICallerContext,object,object,object,object) <IL 0x0000e, 0x0004d>
IronPython.Runtime.Calls.FastCallableWithContextAny.Call (IronPython.Runtime.Calls.ICallerContext,object,object,object,object) <IL 0x00015, 0x00067>
IronPython.Runtime.Calls.BuiltinFunction.Call (IronPython.Runtime.Calls.ICallerContext,object,object,object,object) <IL 0x0000d, 0x00058>
IronPython.Runtime.Operations.Ops.CallWithContext (IronPython.Runtime.Calls.ICallerContext,object,object,object,object,object) <IL 0x00012, 0x000b0>
IronPython.Runtime.Importer.Import (IronPython.Runtime.PythonModule,string,IronPython.Runtime.List) <IL 0x0000d, 0x0006c>
IronPython.Runtime.Operations.Ops.Import (IronPython.Runtime.PythonModule,string) <IL 0x00007, 0x0003b>
(wrapper dynamic-method) object.<string>##1 (IronPython.Runtime.ModuleScope) <IL 0x0006b, 0x00210>
Run Code Online (Sandbox Code Playgroud)

脚本和'UnityEngine.dll'位于同一文件夹中.这是脚本:

import clr
clr.LoadAssemblyFromFile("UnityEngine.dll")

import UnityEngine
from UnityEngine import *

Debug.Log("Hello World from Python!")
Run Code Online (Sandbox Code Playgroud)

mono ironpython unity-game-engine

23
推荐指数
1
解决办法
9534
查看次数

编译IronPython WPF项目到exe

打包IronPython应用程序进行部署的最佳方法是什么?在浏览网页后,我提出的最好的事情(以及我目前正在做的事情)是将clr.CompileModules()我整个项目的.py文件粘合到一个.dll中,然后单独run.py执行此操作来运行dll:

import clr
clr.AddReference('compiledapp.dll')

import app
Run Code Online (Sandbox Code Playgroud)

但这仍然不是最理想的,因为这意味着我必须这样做

  1. 分发3个文件(the .dll,the .xamlrun.py启动器)
  2. 在主机上安装IronPython

此外,在IronPython与Visual Studio 2010进行了精彩的集成之后,感觉如此...... hacky.我完全不知道为什么没有针对IPy应用程序的集成构建系统,因为它总体上归结为IL无论如何.

理想情况下,我希望能够以某种方式.exe.xaml内部合并一个单独的内容(我读到C#apps将XAML编译为BAML并将它们合并到可执行文件中),并且不需要安装IronPython来运行.这至少有一半可能吗?(我想如果exe需要一些额外的.DLL或者其他东西就可以了.重要的是它是.exe格式的.)


一些编辑要澄清:我已经尝试了pyc.py,但它似乎并不承认我的项目不仅仅是这样的事实app.py.它产生的exe的大小表明它只是"编译" app.py而不包含任何其他文件到exe中.那么,我如何告诉它编译我的项目中的每个文件?

为了帮助可视化,这是我项目的解决方案资源管理器窗口的屏幕截图.


编辑II:遗憾的是,唯一的方法是使用pyc.py并将每个文件作为参数传递给它.我对这种方法有两个问题:

  1. 我怎么可能处理一个大的命令行?命令中最多包含256个字符.
  2. pyc.py如何知道保存包/文件夹结构?如上面的项目截图所示,我的编译程序如何知道访问子文件夹中的模块,例如访问DT\Device?层次结构是否以某种方式"保留"在dll中?

编辑III:由于通过pyc.py命令行传递70个文件名将是不实用的,为了解决更优雅地构建IPy项目的问题,我决定增加pyc.py.

我添加了.pyproj通过/pyproj:参数读取文件的代码,解析XML,并从那里获取项目中使用的py文件列表.这一直很好; 但是,生成的可执行文件似乎无法访问属于我的项目的python子包(子文件夹).我的版本pyc.py与我的.pyproj阅读支持的补丁可以在这里找到:http://pastebin.com/FgXbZY29

当这个新pyc.py项目在我的项目上运行时,这是输出:

c:\Projects\GenScheme\GenScheme>"c:\Program Files (x86)\IronPython 2.7\ipy.exe"
pyc.py /pyproj:GenScheme.pyproj /out:App /main:app.py /target:exe
Input Files:
        c:\Projects\GenScheme\GenScheme\__init__.py
        c:\Projects\GenScheme\GenScheme\Agent.py
        c:\Projects\GenScheme\GenScheme\AIDisplay.py
        c:\Projects\GenScheme\GenScheme\app.py …
Run Code Online (Sandbox Code Playgroud)

python wpf ironpython visual-studio-2010

22
推荐指数
3
解决办法
8272
查看次数

铁蟒,美丽的汤,win32应用程序

美丽的汤与铁蟒一起工作吗?如果是这样的铁蟒的版本?使用iron python在.net 2.0上分发Windows桌面应用程序是多么容易(主要是c#调用一些python代码来解析html)?

.net python ironpython

21
推荐指数
3
解决办法
8350
查看次数

如何在App.Config中使用IronPython?

我有一个类库,通常从.net控制台或Web应用程序调用.它集成了各种组件,并依赖于app.config或web.config.

如果我想从脚本(即IronPython)中使用类库,我该如何让脚本使用配置文件?理想情况下,我希望能够在运行脚本时按照惯例选择配置文件(配置文件与脚本文件并排).

如果可能,我不想更改ipy.exe.config,因为如果没有IronPython的多个副本,这将无法扩展到多个配置?

任何替代品?

ironpython

21
推荐指数
1
解决办法
4012
查看次数

IronPython:使用pyc.py编译的EXE无法导入模块"os"

我有一个简单的IronPython脚本:

# Foo.py
import os

def main():
    print( "Hello" )

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

它运行正常并打印Hello如果我用IronPython运行它:

ipy Foo.py
Run Code Online (Sandbox Code Playgroud)

按照IronPython中给出的说明- 如何编译exe,我使用以下命令将此IronPython脚本编译为EXE:

ipy pyc.py /main:Foo.py /target:exe
Run Code Online (Sandbox Code Playgroud)

执行Foo.exe会出现此错误:

Unhandled Exception: IronPython.Runtime.Exceptions.ImportException: No module named os
   at Microsoft.Scripting.Runtime.LightExceptions.CheckAndThrow(Object value)
   at DLRCachedCode.__main__$1(CodeContext $globalContext, FunctionCode $functionCode)
   at IronPython.Compiler.OnDiskScriptCode.Run()
   at IronPython.Compiler.OnDiskScriptCode.Run(Scope scope)
   at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptC
ode, ModuleOptions options)
Run Code Online (Sandbox Code Playgroud)

为什么找不到模块"os"?我该如何解决这个问题,这样我才能得到一个有效的EXE?

(请注意,这与IronPython无法导入模块操作系统的问题不同,因为如果我运行脚本,脚本工作正常ipy.exe.)

python ironpython

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