.NET Core 3.1 助力 Python Web Server
阿新 • • 發佈:2020-01-08
概覽
最近有個需求是通過c#程式碼來啟動python 指令碼。嘿~嘿!!!
突發奇想~~既然可以啟動python指令碼,那也能啟動flask,於是開始著手操作。
先看一波gif圖
通過開啟控制檯啟動flask web程式
首先我們應該準備!
準備
因為使用的是.NET Core 3.1 來建立的控制檯程式,所以需要下載dotnet-sdk-3.1
, 如果使用的是.Net Framework直接執行即可
大部分客戶機系統安裝的都是純淨版本,往往缺少一部分元件,所以我們在純淨的環境下需要準備必備元件:
dotnet-sdk-3.1.100-win-x64.exe
實現
通過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
結構說明與配置
AnWorker 指令碼網站的程式碼結構(看圖1圖2)需要說明幾點
- venv 是虛擬環境,學過Python的都明白
- /venv/Lib 把Python 3的系統依賴庫(Python\Python37\Lib 此資料夾下 除 site-packages 資料夾)存放在裡面,不然啟動不成功
- /venv/DLLs (不然則會缺少一大堆的模組在路上)
- /venv/Scripts 替換掉原有的虛擬環境
- /venv/Lib 把Python 3的系統依賴庫(Python\Python37\Lib 此資料夾下 除 site-packages 資料夾)存放在裡面,不然啟動不成功
- doc 是存放文件
- src 是原始碼
結束
闡述下自己的觀點,看官可能會問到幹嘛不直接F5,其不是更好,最後發現沒有一點diao用,我想說:存在即合理
這個時候,C# 呼叫Python 應運而生!安排~
下載地址:https://github.com/androllen/AnWor