标签: ironpython

将IronPython 2嵌入C#Web应用程序的问题

第一个背景(包括它有帮助):

我的应用程序是最近升级到.Net Framework v3.5的基于Web的框架,但不使用母版页/用户控制系统.它更类似于MVC模式(虽然更旧),并从模板的响应流中输出纯HTML.Python表达式允许实现一些规则和模板变体.

旧的方式

在C#中嵌入IronPython 1.x引擎时,我们能够执行以下代码:

PythonEngine pe = new PythonEngine();
Assembly a = Assembly.LoadFile("path to assembly");
pe.LoadAssembly(a);
pe.Import("Script");
Run Code Online (Sandbox Code Playgroud)

ipy 2.0中没有Import()方法,并且ImportModule()方法似乎没有相同的工作方式.Import()减轻了在我们编写的每个python脚本中放置一行的需要,例如:

from MyAssembly import MyClass
Run Code Online (Sandbox Code Playgroud)

MyClass充满了静态方法,这意味着对MyClass.MyMethod()的调用非常有效.我不能只是实例化一个对象并将其分配给范围内的变量,因为包含MyClass的程序集是在运行时动态加载的.

现在问题

我已经整理了IronPython 2.0集成的所有其他部分,但是我不希望我的实现者在他们编写的每个脚本的顶部输入"来自MyAssembly import MyClass"(在ipy 1中没有必要时,这似乎很愚蠢) .x)也可能暂时成为一个支持问题.

最后问题

有人有这个问题并解决了吗?我是否以错误的方式为DLR做事?还是我错过了一些明显的东西?

我不确定有人提供帮助的细节,但我希望这已经足够了.

c# ironpython embedding

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

循环Python/IronPython对象方法

循环Python对象的方法并调用它们的正确方法是什么?

鉴于对象:

class SomeTest():
  def something1(self):
    print "something 1"
  def something2(self):
    print "something 2"
Run Code Online (Sandbox Code Playgroud)

python reflection ironpython introspection python-datamodel

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

使用IronPython来学习.NET框架,这很糟糕吗?

因为我是Python粉丝,所以我想学习使用IronPython的.NET框架.我会错过什么吗?这在某种程度上不推荐吗?

编辑:我非常了解Java(因此学习/使用新语言对我来说不是问题).如果需要,我是否可以使用我在IronPython中学到的所有东西(不包括语言特征)来编写C#代码?

.net c# ironpython

4
推荐指数
3
解决办法
438
查看次数

IronPython - 如何重命名文件夹名称

例如:如何将C:\ Program Files\Music_Files重命名为C:\ Program Files\MusicFiles

ironpython

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

如何创建图书馆项目

我可以看到控制台应用程序,WPF,WinForm等

但是没有图书馆,我只需要一个图书馆。

我该如何欺骗呢?还是没有办法用Iron Python创建库?

.net ironpython visual-studio-2010

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

解释Python的站点包.我把库放在那里吗?

我最近发现了一个以Python为代码库的新项目.我之前从未做过Python - 来自C/C++编译代码世界.我遇到了一些了解我当前代码库的问题.

当我们编写代码时,我们有我们的库(比其他代码更通用的组件),以及我们的应用程序代码(应用该库的代码),对吧?在我以前参与过的项目中,我会将我的库代码和应用程​​序保存在一个项目文件夹中的包含文件夹中.在C/C++版本中,会有一个makefile(或一些make系统)将所有内容挂钩在一起,以便包含所有适当的工作.

    Project/
           Library/
                   Utilities.cpp
           Application/
                   Main.cpp
           makefile
Run Code Online (Sandbox Code Playgroud)

我现在进入的项目在site-packages文件夹中有自己的库,该文件夹本身位于IronPython/Python系统文件夹中.该库代码是我们的,并且仍然是"热门"并正在进行中.应用程序代码在系统的其他位置.

这似乎是糟糕的设计,但我的同行们坚持认为这只是"Python的工作方式".Python支持包含/导入.难道一切都不应该是自给自足的吗?像这样分散代码似乎很奇怪.

谢谢!

python import ironpython

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

通过Microsoft.Scripting和IronPython运行Python

我能够创建Python脚本并通过Visual Studio/.NET 4.0动态运行它们,如下所示:

# testScript.py file:
import sys
sys.path.append(r'C:\Program Files (x86)\IronPython 2.7.1\Lib')
import os
os.environ['HTTP_PROXY'] = "127.0.0.1:8888"
import urllib2
response = urllib2.urlopen("http://www.google.com")
Run Code Online (Sandbox Code Playgroud)

然后在.NET 4.0 WinForms项目中:

ScriptEngine engine = Python.CreateEngine();
ScriptSource script = engine.CreateScriptSourceFromFile("testScript.py");
ScriptScope scope = engine.CreateScope();
script.Execute(scope);
Run Code Online (Sandbox Code Playgroud)

但是,我导入的IronPython DLL不包含所有标准模块,所以我必须这样做

import sys
sys.path.append(r'C:\Program Files (x86)\IronPython 2.7.1\Lib')
Run Code Online (Sandbox Code Playgroud)

步骤,以便我可以运行接下来的4行.

有什么方法可以避免这种情况吗?

我将发布应用程序,我不想依赖于每个人的机器上的文件路径相同!

.net python import ironpython module

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

IronPython WPF加载新窗口

请耐心等待,我是GUI编程,IronPython,WPF和.NET的新手.但是,我对Python非常熟悉.我浏览了很多在线教程,但似乎没有人能解决我面临的确切问题.(也许这是微不足道的?但对像我这样的人来说这并不是微不足道的!)

问题:我想知道如何从Windows.System.Application中将新的WPF窗口(XAML)作为新窗口启动.基本上,我想从我的应用程序的帮助菜单中启动一个"关于"对话框.我知道这可以通过使用System.Windows.Forms.Form来实现,但从长远来看,我希望能够通过使用XAML标记加载更复杂的窗口安排.

目前,当我单击关于菜单(mnuAboutClick)时,这会加载XAML窗口,但在此过程中替换/销毁原始主窗口(WpfMainWindow).我希望两个窗户都保持打开状态.

编辑:或者,有没有办法将xaml加载到System.Windows.Forms.Form?这将适合我的需要.

这是我的代码示例:

import wpf
from System.Windows import Application, Window

class MyWindow(Window):
    def __init__(self):
        wpf.LoadComponent(self, 'WpfMainWindow.xaml')

    def mnuAboutClick(self, sender, e):
        print 'About Menu Click'
        wpf.LoadComponent(self, 'WpfAboutWindow.xaml') # How to launch "About Dialog", This works, but destroys "WpfMainWindow"!

if __name__ == '__main__':
    Application().Run(MyWindow())
Run Code Online (Sandbox Code Playgroud)

python windows wpf user-interface ironpython

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

Spotfire IronPython脚本可滚动浏览筛选器并更新每个步骤的可视化效果(日期范围内的播放按钮)

大家早上好,

我已经在这个问题上工作了几天,但找不到解决方法。我已经研究过,但没有用谷歌搜索。任何帮助/见解将不胜感激。我正在尝试创建一个按钮,当单击该按钮时,它将自动通过日期过滤器(例如从1/1/15开始),并通过1/2 -1/5,随着新过滤的标记层逐步通过,从而更新地图功能。我已使过滤器逐步通过1 / 1-1 / 5;但是,它不会随着进度的进行而更新地图可视化效果,因此用户看到的只是从1/1到1/5的跳转,中间有一个暂停(每个步骤都有一个睡眠计时器)。我已经包含了下面的代码,我只是在学习IronPython,并且不确定刷新可视化需要调用什么。Visualization.Refresh()不起作用。非常感谢!

import Spotfire.Dxp.Application.Filters as filters
import Spotfire.Dxp.Application.Filters.ItemFilter
import time
from Spotfire.Dxp.Application.Filters import FilterTypeIdentifiers
from Spotfire.Dxp.Data import DataProperty, DataType, DataPropertyAttributes, DataPropertyClass
from Spotfire.Dxp.Application.Visuals import MarkerLayer

myPanel = Document.ActivePageReference.FilterPanel
myFilter= myPanel.TableGroups[2].GetFilter("Date (Daily)")

myFilter.FilterReference.TypeId = FilterTypeIdentifiers.ItemFilter
itemFilter = myFilter.FilterReference.As[filters.ItemFilter]()

whichCol = itemFilter.DataColumnReference
count = 0
while count < 5:

    count = count +1
    if (whichCol.Properties.PropertyExists("CurrentStep") == False):
        myProp = DataProperty.CreateCustomPrototype("CurrentStep",0,DataType.Integer,DataPropertyAttributes.IsVisible|DataPropertyAttributes.IsEditable)
        Document.Data.Properties.AddProperty(DataPropertyClass.Column, myProp)
        whichCol.Properties.SetProperty("CurrentStep",0)
        Document.Properties["DateTest"] = "1/1/15" 
        time.sleep(1)

    else:
        time.sleep(1)
        whichVal = whichCol.Properties.GetProperty("CurrentStep")
        #print whichVal
        #print itemFilter.Values.Count
        if …
Run Code Online (Sandbox Code Playgroud)

ironpython spotfire

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

IronPython:没有名为json的模块

我已经安装了IronPython

我的python文件看起来像这样:

import sys
print(sys.version)
import json
Run Code Online (Sandbox Code Playgroud)

运行它的代码:

var p = Python.CreateEngine();
var scope = p.CreateScope();
p.ExecuteFile("Test.py", scope);
Run Code Online (Sandbox Code Playgroud)

它输出:

2.7.7(.NET 4.0.30319.42000(32位)上的IronPython 2.7.7(2.7.7.0))

但是随后失败,但出现以下异常:

没有名为json的模块

据我了解,此版本的IronPython中应包含json模块。

为什么会出现此错误?

c# ironpython

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