我在IronPython邮件列表上看到过描述如何在c#中编写扩展模块的文档。我已经能够遵循文档,它工作正常。但是,有没有人知道如何在c#中生成分层扩展PACKAGE?例如,你应该为模块做这样的事情:
[assembly: PythonModule("my_module", typeof(test.MyModule))]
namespace test
{
public static class MyModule
{
public static void hello_world()
{
Console.WriteLine("hello world");
}
}
但你如何创建一个名为testme UNDER my_module的模块,你可以这样导入:
from my_module import testme
一个简短的例子或向正确的方向轻轻推动将是美好的!
答案 0 :(得分:2)
我所做的就是像往常一样创建我的C#库。
namespace foo.bar{
public class Meh{
public void CanDoSomething(){
//does something
}
}
}
然后去
import clr
clr.AddReference("My.DLL") # You may want to change it to AddReferenceByPath or depending on your needs
from foo.bar import Meh
mehvar = Meh()
mehvar.CanDoSomething()
您可以在http://www.theautomatedtester.co.uk/seleniumtraining/selenium_two_ironpython.htm
看到一些适合我的代码答案 1 :(得分:1)
PyCrypto使用.pyd文件作为其本机代码,这些代码与Python文件位于同一文件夹中。我不相信IronPython支持这种安排。
理想情况下,您只想实现PyCrypto的本机部分,以便可以利用现有的Python包。一个选项可能是创建一个包含必要类的单个模块(比如IronPyCrypto
)并修改PyCrypto中的__init__.py
文件来说
# for the Hash package
if sys.platfrom == 'cli':
from IronPyCrypto import MD2, MD4, SHA256
你失去了与PyCrypto源的完全兼容性,但至少它会起作用。