.NET和Python通过IronPython进行互操作

.NET和Python通过IronPython进行互操作,python,.net,interop,ironpython,Python,.net,Interop,Ironpython,我试图使我的一些Python脚本可以从.NET调用。我发现IronPython是实现这一点的好工具。所以我试着使用它,但现在我有以下问题: 如何将软件包安装到IronPython?我现有的Python代码使用它们,所以我需要安装它们。我尝试按照安装pip,但由于StackOverflowException,Get进程终止。并没有找到解决问题的方法 假设我能够安装软件包,那么带有C/C++绑定的软件包是否仍然不能在IronPython中使用?因为on写的是无法安装NumPy和SciPy,但页面似乎

我试图使我的一些Python脚本可以从.NET调用。我发现IronPython是实现这一点的好工具。所以我试着使用它,但现在我有以下问题:

  • 如何将软件包安装到IronPython?我现有的Python代码使用它们,所以我需要安装它们。我尝试按照安装pip,但由于StackOverflowException,Get
    进程终止。
    并没有找到解决问题的方法
  • 假设我能够安装软件包,那么带有C/C++绑定的软件包是否仍然不能在IronPython中使用?因为on写的是无法安装NumPy和SciPy,但页面似乎很旧
  • 如何从其他.NET代码访问Python代码?说我必须使用DLR宿主API,因为从IronPython编译的程序集不符合CLS。但我不知道如何使它与包一起工作
  • 也许有另一种方法可以从.NET调用Python代码

  • 提前谢谢。

    好的,我想我已经搞定了

  • pip的问题是因为我尝试使用ipy64。使用ipy解决了这个问题
  • 是的,现在不可能使用带有C/C++绑定的包
  • 让我们假设pip和请求是使用
    ipy-X:Frames-m ensurepip
    ipy-X:Frames-m pip安装请求安装的(可以找到IronPython中有关pip的更多信息)。可以通过以下方式使用DLR宿主API使用请求:

    var engine = IronPython.Hosting.Python.CreateEngine(new Dictionary<string, object> {{"Frames", true}});
    var searchPaths = engine.GetSearchPaths();
    searchPaths.Add(@"C:\Program Files (x86)\IronPython 2.7\Lib");
    searchPaths.Add(@"C:\Program Files (x86)\IronPython 2.7\Lib\site-packages");
    engine.SetSearchPaths(searchPaths);
    engine.CreateScriptSourceFromString("import requests; r = requests.get('http://www.google.com/'); print r.status_code").Execute();
    
    var-engine=IronPython.Hosting.Python.CreateEngine(新字典{{“Frames”,true});
    var searchpath=engine.getsearchpath();
    添加(@“C:\ProgramFiles(x86)\IronPython 2.7\Lib”);
    添加(@“C:\ProgramFiles(x86)\IronPython2.7\Lib\site packages”);
    engine.SetSearchPath(搜索路径);
    CreateScriptSourceFromString(“导入请求;r=requests.get('http://www.google.com/“);打印r.status_code”).Execute();
    
    有关托管Python的更多信息,请参见托管IronPython部分下的IronPython文档文件(默认位置为
    C:\ProgramFiles(x86)\IronPython 2.7\Doc\IronPython.chm

  • 可以使用Python for.NET从.NET调用CPython代码

  • @denfromufa感谢您提供了一个可能的解决方案。正如我看到的,Python for.NET需要完整的CPython安装。有没有办法将解释器和已安装的包“打包”(不知道如何正确调用此过程)到一个“文件”中,并在Python for.NET中使用此“文件”作为解释器?我希望我的想法是可以理解的。是的,你们需要指出使用pythonhome和path-env的独立CPython解释器的位置。从.NET调用时使用VAR