当前位置:   article > 正文

C# 启动 Flask for Python_c#启动flax

c#启动flax

概览#
最近有个需求是通过c#代码来启动 python 脚本。嘿~嘿!!!
突发奇想~~既然可以启动 python 脚本,那也能启动 flask,于是开始着手操作。
先看gif图

在这里插入图片描述

准备#
因为使用的是.NET Core 3.1来创建的控制台程序,启动flask web程序,所以需要下载dotnet-sdk-3.1, 如果使用的是.Net Framework直接运行即可,当前是生产环境下的启动,如果是开发机,直接使用虚拟环境即可无需配置。
大部分客户机系统安装的都是纯净版本,往往缺少一部分组件,所以我们在纯净的环境下需要准备必备组件:
dotnet-sdk-3.1.100-win-x64.exe

实现#
通过Process来启动flask的server.py

Copy
cmd
cd Desktop
mkdir test
cd test
code .
ctrl + j 
dotnet new console
Copy
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

namespace tes
{
  class Program
  {
    private static string _basePath => AppDomain.CurrentDomain.BaseDirectory;
    private static string _srcPath => Path.Combine(_basePath, @"AnWorker\src");
    private static string _venvPath => Path.Combine(_basePath, @"AnWorker\venv");
    static void Main(string[] args)
    {
      // string fileName = Path.Combine(_venvPath, "Scripts", "python.exe");
      // string arguements = Path.Combine(_srcPath, "server.py");
   
      var workPath = Path.Combine(_venvPath, "Scripts");
      var fileName = Path.Combine(workPath, "python.exe");
      var arguements = Path.Combine(_srcPath, "server.py");
      Console.WriteLine(fileName);
      Console.WriteLine(arguements);

      var psi = new ProcessStartInfo(fileName)
      {
        Arguments = arguements,
        WorkingDirectory = _venvPath,
        ErrorDialog = false,
        UseShellExecute = false
      };


      var path = psi.EnvironmentVariables["PATH"];
      if (path != null)
      {
        var arrayt = path.Split(new[] { ';' }).Where(p => !p.ToLower().Contains("python")).ToList();
        arrayt.AddRange(new[] { _venvPath, Path.Combine(_venvPath, "Lib") });
        psi.EnvironmentVariables["PATH"] = string.Join(";", arrayt);
      }


      Process.Start(psi);

      Console.ReadLine();
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

在这里插入图片描述

图1
在这里插入图片描述

图2

结构与配置#
AnWorker 是脚本网站的代码,结构如下(看图1图2)

venv 是虚拟环境,学过Python的都明白
/venv/Lib 把Python 3的系统依赖库(Python\Python37\Lib 此文件夹下 除 site-packages 文件夹)存放在里面,不然启动不成功
在这里插入图片描述

/venv/DLLs (不然则会缺少一大堆的模块在路上)

/venv/Scripts 替换掉原有的虚拟环境

doc 是存放文档
src 是源码
结束#
阐述下自己的观点,看官可能会问到干嘛不直接F5,其不是更好,我想说:存在即合理
现在Python应用很广,任何语言都有可能会使用到脚本开发。
这个时候,C# 调用Python 应运而生!

安排~

作者: luquanren

出处:https://www.cnblogs.com/luquanmingren/p/12157479.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/748431
推荐阅读
相关标签
  

闽ICP备14008679号