乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C# 啟動 Flask for Python

       丹楓無跡 2021-04-17

      概覽

      最近有個需求是通過c#代碼來啟動 python 腳本。嘿~嘿!!!
      突發(fā)奇想~~既然可以啟動 python 腳本,那也能啟動 flask,于是開始著手操作。
      先看gif圖

      準(zhǔn)備

      因為使用的是.NET Core 3.1來創(chuàng)建的控制臺程序,啟動flask web程序,所以需要下載dotnet-sdk-3.1, 如果使用的是.Net Framework直接運行即可,當(dāng)前是生產(chǎn)環(huán)境下的啟動,如果是開發(fā)機(jī),直接使用虛擬環(huán)境即可無需配置。
      大部分客戶機(jī)系統(tǒng)安裝的都是純凈版本,往往缺少一部分組件,所以我們在純凈的環(huán)境下需要準(zhǔn)備必備組件:
      dotnet-sdk-3.1.100-win-x64.exe

      實現(xiàn)

      通過Process來啟動flask的server.py

      cmd
      cd Desktop
      mkdir test
      cd test
      code .
      ctrl + j 
      dotnet new console
      
      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

      結(jié)構(gòu)與配置

      AnWorker 是腳本網(wǎng)站的代碼,結(jié)構(gòu)如下(看圖1圖2)

      • venv 是虛擬環(huán)境,學(xué)過Python的都明白
        • /venv/Lib 把Python 3的系統(tǒng)依賴庫(Python\Python37\Lib 此文件夾下 除 site-packages 文件夾)存放在里面,不然啟動不成功
        • /venv/DLLs (不然則會缺少一大堆的模塊在路上)
        • /venv/Scripts 替換掉原有的虛擬環(huán)境
      • doc 是存放文檔
      • src 是源碼

      結(jié)束

      闡述下自己的觀點,看官可能會問到干嘛不直接F5,其不是更好,我想說:存在即合理
      現(xiàn)在Python應(yīng)用很廣,任何語言都有可能會使用到腳本開發(fā)。
      這個時候,C# 調(diào)用Python 應(yīng)運而生!

      安排~

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多