有一个名为"Entities"的IronPython包.该软件包包含一个"Entity.py"文件,该文件定义了"Customer"类和"Address"类.
如果我运行这个程序:
customer = Customer()
print customer.GetType().AssemblyQualifiedName
address = Address()
print address.GetType().AssemblyQualifiedName
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
IronPython.NewTypes.System.Object_1$1, Snippets.scripting, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
IronPython.NewTypes.System.Object_1$1, Snippets.scripting, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Run Code Online (Sandbox Code Playgroud)
这是如何运作的?为什么两种类型都有相同的类型名称(Object_1$1)?
我必须使用一个API,它需要一个类型的程序集限定名称来创建该类型的实例.我希望能够以这种方式使用它:
customer = aFactory.Create("Entities.Customer, Entities");
Run Code Online (Sandbox Code Playgroud)
我该怎么做?有没有办法指定命名空间和程序集名称?
谢谢
我需要指出正确的方向.我已经将Iron Python脚本主机嵌入到一个简单的C#应用程序中,但现在我需要了解锁定用户生成的IronPython或IronRuby脚本的安全性的最佳实践.
具体来说,什么是防止库导入的策略,并且在.NET中没有办法在不同的安全上下文中运行代码块或线程,例如防止文件系统访问?此外,是否可以为此上下文分配内置级别或角色而不是实际用户?
谢谢!
我想在IronPython中进行深度复制,但是当我写的时候
import copy
Run Code Online (Sandbox Code Playgroud)
我得到no module named copy.
我如何在IronPython中进行深度复制?
我可能是错的,但在IronPython中引发SystemError时,我似乎只得到不完整的堆栈跟踪和异常消息.我这样做:
try:
with SQLConnection(DATASOURCES[SCHEDULEDB]) as db:
db.execute_sql( command + ' ' + ','.join(block) + ';' )
except Exception, e:
print 'caught an exception'
print "Unexpected error:", sys.exc_info()[0]
print e
raise
finally:
db.close()
engine.close()
Run Code Online (Sandbox Code Playgroud)
但是,我所看到的只是:
Traceback (most recent call last):
SystemError: The connection has been disabled.
Run Code Online (Sandbox Code Playgroud) 我正在使用以下C#代码使用IronPython调用Python脚本:
ScriptEngine scriptEngine;
var opts = new Dictionary<string, object>();
opts["Arguments"] = new[] {
Server.MapPath(@"~\Processing\input.7z"), // Input
Server.MapPath(@"~\Processing\key.pem"), // Key
Server.MapPath(@"~\Processing\") }; // Output
scriptEngine = Python.CreateEngine(opts);
var sp = scriptEngine.GetSearchPaths();
sp.Add(Server.MapPath(@"~\python\lib"));
scriptEngine.SetSearchPaths(sp);
var scope = scriptEngine.Runtime.ExecuteFile(Server.MapPath(@"~\python\test.py"));
Run Code Online (Sandbox Code Playgroud)
该脚本采用以下参数:
arg0,input,key,output = sys.argv
Run Code Online (Sandbox Code Playgroud)
我收到错误"需要超过3个值来解压".我究竟做错了什么?
所以我试着寻找这个答案,然后直接来询问.将IronPython应用程序/脚本集转换为EXE似乎是可行的.一个问题是,他们似乎都在谈论将IronPython与IronPython Studios(Visual Studio的Python插件)一起使用.最后我查了一下,我认为IronPython Studios基本上被用于Visual Studios(或PTVS)插件工具的Python工具所取代.这个问题是由于我的代码的结构方式,它实际上设法在将我的代码加载到IDE时使插件崩溃,从而使Visual Studios崩溃.它会这样做,直到下个月定期更新在月底或下个月初发布.所以这不是一个选项,因为我不得不在Eclipse中使用PyDev插件开发我的项目.
我之前使用py2exe将一些基本的Python应用程序转换为可执行文件,但那时我正在使用CPython解释器.我不知道如何设置py2exe来使用IronPython.是否可以使用py2exe来生成IronPython可执行文件?如果我的程序使用额外的C#程序集来完成它的工作,我怎么设置它们以便py2exe可以使用它们,我的可执行文件可以看到它们用于引用?
是否可以将IronPython类声明为"Export",从而将它们添加到主机C#应用程序可以导入的MEF目录中?
我真的找不到任何具体的例子,只是推测.
以下是我手动加载实现.NET接口的Python类的方法:
https://github.com/versionone/VersionOne.SDK.Experimental
我希望能够在python类上放置类似于在C#中执行它的方式.(或等同的东西)
有没人试过这个?
谢谢,乔希
我使用C#编写了最简单的DLL并将其复制到桌面.现在我想加载DLL以便看到我可以使用API但是我遇到了一些错误:
我使用的代码:(在这里查看一些问题后编辑)
import clr
import sys
sys.path.Add("C:\Desktop\DLLTest.dll")
clr.AddReference("C:\Desktop\DLLTest.dll")
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
IOError: System.IO.IOException: Could not add reference to assembly DLLTest.dll
Run Code Online (Sandbox Code Playgroud)
什么需要添加到sys路径?为什么?谢谢!!!
当我们从Visual Studio创建一个新的 WPF C#项目时,我们得到4个基本文件 "App.xaml","App.cs","MainWindow.xaml","MainWindow.cs"
这里的App.xaml文件基本上用于存储application related Resources在一个文件中,以便存在于整个应用程序中.
但是在Visual Studio中创建 WPF Python项目时, 我们只获得了2个文件 "MainWindow.xaml" and "MainWindow.py"
I want to create 2 more file in my Python project "App.xaml"和"App.py"这样"App.xaml"我就可以轻松定义我所有与应用程序相关的资源样式和控件模板.
Plz帮助!!
我想知道是否有一种方法可以在Ironfire中对Spotfire中表的标记行数进行计数,而无需遍历该表的所有行。
我问这个问题是因为在软件窗口底部的小工具栏中已经可以使用此标记行数。我在Internet和Spotfire API中进行搜索,但未找到任何内容。
在下面,您将找到此工具栏的图像: