bjwf:
惭愧,惭愧,python我是新手,在网上一通乱找,走了很多弯路,现在总结一下方法是这样的.
[阅读: 499] 2008-10-21 12:03:05
1.安装python2.5和对应的pywin32
2.下载ironPython源代码.是C#的
3.用vistual studio 建立一个.NET类库工程,把ironPython的src里的ironPython的ironMath里的c#源文件(不要assemblyInfo.cs)都考到你的工程目录里 在工程里增加刚考来的源文件.
4如果是vistual studio 2005的话,工程里会自动生成 assemblyInfo.cs
把 其中的[assembly: ComVisible(false)] 改成true,其它不变,如果是低版本的vistual studio,没有这个文件则修改 IronPython.Hosting.PythonEngine.cs, 在前面加上
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("ComIronPython")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("moto")]
[assembly: AssemblyProduct("ComPython")]
[assembly: AssemblyCopyright("版权所有 (C) xxxx 2008")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(true)]
[assembly: Guid("e95eaf43-da8d-44d2-a268-133ec195d594")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
其中最重要的是ComVisible和Guid这两句.
5.在项目=>属性=>生成里把 为COM Interop注册 打上勾
6.在项目=>属性=>签名 里把为程序集签名 打上勾,选择强名称密钥文件时 选择新建,输个文件名,比如 IronPython.snk, 也可以手动生成密钥文件,然后在这里选择.
手动生成的方法:在.Net Framework的命令行界面里用 sn -k IronPython.snk 这个命令.
7.编译项目生成 IronPython.dll
8.在.Net Framework的命令行界面里用 regasm IronPython.dll 注册COM组件
9.在.Net Framework的命令行界面里用 gacutil -i IronPython.dll 把库加到全局缓存里
10. 现在运行Python的comdline, 假设在python里要调用的.NET库是 test.dll, 其中namespace是test,类名是testclass, 函数是func
11.输入以下代码:
>>>import win32com
>>>import win32com.client
>>>eng=win32com.client.Dispatch("IronPython.Hosting.PythonEngine")
>>>eng.execute("import clr")
>>>eng.execute("libname=\"test.dll\"")
>>>eng.execute("clr.AddReferenceToFile(libname)")
>>>eng.execute("from test import *")
>>>eng.execute("obj = testclass()")
>>>eng.execute("print obj.func()")
当然也可以写一个IronPython调用net的callDotNet.py文件,在这里用
>>>eng.execute("import callDotNet.py")