创建一个在c#中执行python的类

时间:2016-04-12 03:15:01

标签: c# python

我有一个python代码。我需要从我的c#程序中执行python脚本。在对此进行了一些搜索后,我发现主要有两种方法从c#执行python脚本。

使用'Process'命令和

另一个使用Iron Python。

我的问题可能看起来很愚蠢,有没有其他方法可以执行python脚本?更具体一点,我可以创建一个类,让我们说c#中的'Python'和一个成员函数'execute_script',它不使用像铁python这样的任何api,或者不创建执行脚本的过程,所以如果调用'execute_scipt(mypythonprogram.py)',我的脚本被执行。对不起,如果这看起来很蠢。如果可以的话,请帮帮我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以将python嵌入到您的应用程序中。查看python文档部分扩展和嵌入> Embedding Python in Another Application

编辑:这需要C ++,但是构建一个可以从C#中使用的C ++包装器应该不会太难(参见this MSDN article)。

答案 1 :(得分:0)

您是否可以创建一个C#类,在不使用Iron Python且不使用任何外部API的情况下调用Python脚本?不,那是不可能的。您还有其他一些选择:

  1. 将Python运行时集成到您的程序中。
  2. Smead已经描述了一种方法。它可以工作,并且确实避免了创建另一个进程,但是要使它运行将会有很多工作,并且它仍然在技术上使用API​​。我不建议将此文件用于不需要来回传递数据的单个Python脚本,但如果您的其他选项没有成功,那么很高兴知道该选项存在。

    1. 使用处理模块。
    2. 这可能就是我要做的。当恶意用户可能导致您执行伪shell命令,或者恶意用户可以替换Python脚本的内容时,进程存在安全问题。当你能锁定这两件事时,这是非常安全的。

      速度不太可能成为一个问题。使用进程调用只需几分钟就可以设置一个C#程序,所以如果你的导师关注速度,只需编写并测量速度,看看它是否真的有问题。

      1. 考虑用C#
      2. 重写脚本

        C#是一种非常富有表现力的语言,具有非常强大的标准库,因此假设您的脚本不是数千行,并且不使用任何模糊的Python库,这实际上可能没什么用处。如果你真的不能使用Process,这将是我考虑的下一个解决方案。