.NET Core 3.1 启动 Flask for Python
程序员文章站
2022-06-15 10:30:02
概览 最近有个需求是通过c 代码来启动 python 脚本。嘿~嘿!!! 突发奇想~~既然可以启动 python 脚本,那也能启动 flask,于是开始着手操作。 先看gif图 准备 因为使用的是 来创建的控制台程序,启动flask web程序,所以需要下载 , 如果使用的是 直接运行即可,当前是生 ......
概览
最近有个需求是通过c#代码来启动 python 脚本。嘿~嘿!!!
突发奇想~~既然可以启动 python 脚本,那也能启动 flask,于是开始着手操作。
先看gif图
准备
因为使用的是.net core 3.1
来创建的控制台程序,启动flask web程序,所以需要下载dotnet-sdk-3.1
, 如果使用的是.net framework
直接运行即可,当前是生产环境下的启动,如果是开发机,直接使用虚拟环境即可无需配置。
大部分客户机系统安装的都是纯净版本,往往缺少一部分组件,所以我们在纯净的环境下需要准备必备组件:
实现
通过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用,我想说:存在即合理
现在python应用很广,任何语言都有可能会使用到脚本开发。
这个时候,c# 调用python 应运而生!安排~
上一篇: Python函数参数定义及传递方式解析
下一篇: 一个PHP的SQL注入完整过程
推荐阅读
-
asp.net core 3.1 入口:Program.cs中的Main函数
-
Orleans[NET Core 3.1] 学习笔记(四)( 2 )获取Grain的方式
-
Orleans[NET Core 3.1] 学习笔记(三)( 3 )服务端配置
-
分享一个基于Net Core 3.1开发的模块化的项目
-
asp.net core通过控制台启动,设置端口与运行环境
-
.net core mvc启动顺序以及主要部件3-Startup
-
.net core mvc启动顺序以及主要部件2
-
[Asp.net core 3.1] 通过一个小组件熟悉Blazor服务端组件开发
-
ASP.NET Core使用HostingStartup增强启动操作方法详解
-
Asp.net Core 3.1基于AspectCore实现AOP实现事务、缓存拦截器功能