VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > c#编程 >
  • C# 启动 Flask for Python

概览#

最近有个需求是通过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
 **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

 

结构与配置#

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

  • venv 是虚拟环境,学过Python的都明白
    • /venv/Lib 把Python 3的系统依赖库(PythonPython37Lib 此文件夹下 除 site-packages 文件夹)存放在里面,不然启动不成功
    • /venv/DLLs (不然则会缺少一大堆的模块在路上)
    • /venv/Scripts 替换掉原有的虚拟环境
  • doc 是存放文档
  • src 是源码

结束#

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

安排~

作者: luquanren

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



相关教程