VisualStudic c# 中使用Python

c#  中使用Python需要先安装IronPython

方法如下:
打开VisualStudic。建立C#桌面应用(Windowsudu)。
在“解决方案资源管理器”中,需要右击“引用”,管理NuGet程序包。
搜索IronPython。安装。(本次安装的是2.7.8.1)

安装过程如下:
------------------
正在尝试收集与目标为“.NETFramework,Version=v4.6.1”的项目“Windowsudu”有关的包“IronPython.2.7.8.1”的依赖项信息
收集依赖项信息花费时间  293.7  ms
正在尝试解析程序包“IronPython.2.7.8.1”的依赖项,DependencyBehavior  为“Lowest”
解析依赖项信息花费时间  0  ms
正在解析操作以安装程序包“IronPython.2.7.8.1”
已解析操作以安装程序包“IronPython.2.7.8.1”
从“nuget.org”检索包“DynamicLanguageRuntime  1.2.1” 
从“nuget.org”检索包“IronPython  2.7.8.1” 
    GET  https://api.nuget.org/v3-flatcontainer/dynamiclanguageruntime/1.2.1/dynamiclanguageruntime.1.2.1.nupkg
    GET  https://api.nuget.org/v3-flatcontainer/ironpython/2.7.8.1/ironpython.2.7.8.1.nupkg
    OK  https://api.nuget.org/v3-flatcontainer/ironpython/2.7.8.1/ironpython.2.7.8.1.nupkg  936  毫秒
    OK  https://api.nuget.org/v3-flatcontainer/dynamiclanguageruntime/1.2.1/dynamiclanguageruntime.1.2.1.nupkg  961  毫秒
正在安装  IronPython  2.7.8.1。
正在安装  DynamicLanguageRuntime  1.2.1。
正在将程序包“DynamicLanguageRuntime.1.2.1”添加到文件夹“D:\python\test\Windowsudu\packages”
已将程序包“DynamicLanguageRuntime.1.2.1”添加到文件夹“D:\python\test\Windowsudu\packages”
已将程序包“DynamicLanguageRuntime.1.2.1”添加到“packages.config”
已将“DynamicLanguageRuntime  1.2.1”成功安装到  Windowsudu
正在将程序包“IronPython.2.7.8.1”添加到文件夹“D:\python\test\Windowsudu\packages”
已将程序包“IronPython.2.7.8.1”添加到文件夹“D:\python\test\Windowsudu\packages”
已将程序包“IronPython.2.7.8.1”添加到“packages.config”
已将“IronPython  2.7.8.1”成功安装到  Windowsudu
执行  nuget  操作花费时间  9.42  sec
已用时间:  00:00:10.5701721
-------------------------


c#中调用Python程序

            private  string  testPython()
                {
                        string  strH  =  "";
                        try
                        {
                                ScriptEngine  engine  =  Python.CreateEngine();
                                ScriptScope  scope  =  engine.ExecuteFile("test1.py");
                                var  jieguo  =  scope.GetVariable  <  Func  <  object,  object>>("jieguo");
                                dynamic  sdjg  =  jieguo(ti);
                                strH=  sdjg.ToString();
                          }
                        catch  (Exception  e)
                        {
                                Console.WriteLine(e.Message);
                        }
                        return  strH;
                }

其中ti是字符串
jieguo(ti)是Python的程序,将一串数字字符构成的字符串,分解成一个一个数字字符后返回

#file test1.py

def  jieguo(mystr):
     sdjg=list(map(int,mystr))
    return  sdjg

---------------------------------------

 为什么scope.GetVariable  <  Func  <  object,  object>>("jieguo");有两个参数,

def  jieguo(mystr):而只有一个参数?


因为python的第一参数是默认的self

猜你喜欢

转载自blog.csdn.net/www_rsqdz_net/article/details/79683842
今日推荐