【问题标题】:Is it possible to run python script in a standalone .NET application?是否可以在独立的 .NET 应用程序中运行 python 脚本?
【发布时间】:2022-01-03 02:51:07
【问题描述】:

对于我的一个项目,我需要执行一个带有一些文件路径参数的 python 脚本,并且找不到任何关于如何将它包含到我的应用程序中的资源。

我需要应用程序本身是独立的,所以我不能只引用本地 python.exe 文件。我已经阅读了有关 IronPython 的信息,但它与 python3 不兼容,我需要能够导入外部库。网上关于这些主题的信息真的很少,我希望有类似经验的人能解释一下他们是如何做到这一点的?

【问题讨论】:

  • 除了Process.Start(),您还有什么特别需要的吗?
  • 如果你需要你的可执行文件是完全独立的,那么你需要在你的程序中embed the Python interpreter。该脚本可以作为二进制资源进入PE镜像的资源目录。

标签: python c# .net


【解决方案1】:

是的,有可能。

using System.Diagnostics;

public void StartProcess()
    {
        var processStartInfo = new ProcessStartInfo();
        processStartInfo.FileName = "your_python_path";
        var script = "your_script_path";

        processStartInfo.Arguments = $"\"{script}\"";
        processStartInfo.UseShellExecute = false;
        processStartInfo.CreateNoWindow = true;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.RedirectStandardError = true;

        var process = Process.Start(processStartInfo);
    }

【讨论】:

    【解决方案2】:

    您可以查看this question 的答案以查看不同的示例,我不确定是否可以在没有 exe 的情况下运行 Python 脚本。您仍然需要使用像 IronPython 这样的工具来做到这一点。

    从技术上讲,有一个与 Python3 兼容的 IronPython 版本,但它是一个 alpha 版本,它适用于 Python 的 3.4 版本。除了与 Python 的兼容性之外,您还需要使用以下 .NET 版本:.NET Framework 4.6、.NET Core 2.1、.NET Core 3.1 和 .NET 5。

    Here's我说的版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2014-02-07
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 2022-01-22
      • 2018-06-19
      相关资源
      最近更新 更多