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
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,其不是更好,我想说:存在即合理
现在Python应用很广,任何语言都有可能会使用到脚本开发。
这个时候,C# 调用Python 应运而生!
安排~
C# 启动 Flask for Python的更多相关文章
- 通过uwsgi+nginx启动flask的python web程序
通过uwsgi+nginx启动flask的python web程序 一般我们启动python web程序的时候都是通过python直接启动主文件,测试的时候是可以的,当访问量大的时候就会出问题pyth ...
- Ubuntu16.04下搭建mysql + uwsgi + nginx环境启动flask 项目
1.安装mysql Sudo apt-get install mysql 配置mysql的数据存储路径,默认在 /var/lib/mysql sudo cp -R /var/lib/mysql/* / ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- 用gunicorn+gevent启动Flask项目
转自:https://blog.csdn.net/dutsoft/article/details/51452598 Flask,webpy,Django都带着 WSGI server,当然性能都不好, ...
- web 部署专题(二):gunicore 并发部署(用gunicorn+gevent启动Flask项目)
转自:https://blog.csdn.net/dutsoft/article/details/51452598 Flask,webpy,Django都带着 WSGI server,当然性能都不好, ...
- Server-side Sessions with Redis | Flask (A Python Microframework)
Server-side Sessions with Redis | Flask (A Python Microframework) Server-side Sessions with Redis By ...
- 【错误记录】uwsgi 启动 flask 出错
在测试环境使用uwsgi启动flask未成功 正常报错信息: *** Starting uWSGI 2.0.13.1 (64bit) on [Fri Sep 23 09:27:47 2016] *** ...
- Flask —— 使用Python和OpenShift进行即时Web开发
最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定 ...
- gunicorn启动flask项目的坑
问题描述:项目用的是flask框架,在项目上线的时候,服务器上是使用gunicorn来启动项目的.但是上线之后,发现服务成功启动了,也有正确的返回值,但是没有生成日志,而用python来启动服务的时候 ...
随机推荐
- SQL注入:sqli-labs lesson-1 小白详解
为什么是小白详解?因为我就是小白 SQL注入早有耳闻,今天算是真正打开这个门了,但是想要跨进去应该还是没有那么容易. 在B站上听了40分钟的网课,老实说,他讲的还不错,第一遍听不懂也正常 https: ...
- 技术期刊 · 天光台高未百尺 | Uber 工程师的 JS 算法课;大数据时代的个人隐私;设计师的 Github;告别 PPT 工程师;从零开始实现的像素画
蒲公英 · JELLY技术期刊 Vol.42 这是一个最好的时代,多样化的平台给了所有人成长发展的机会,各种需求和解决需求的人让人大开眼界:但这也并不是完美的时代,"前端还需要懂什么算法?& ...
- Java字节码增强技术
简单介绍下几种java字节码增强技术. ASM ASM是一个Java字节码操控框架,它能被用来动态生成类或者增强既有类的功能.ASM可以直接产生class文件,也可以在类被加载入Java虚拟机之前动态 ...
- 爬取房价信息并制作成柱状图XPath,pyecharts
以长沙楼盘为例,看一下它的房价情况如何url = https://cs.newhouse.fang.com/house/s/b91/ 一.页面 二.分析页面源代码 我们要获得的数据就是名字和价格,先来 ...
- 深入刨析tomcat 之---第13篇 tomcat的三种部署方法
writedby 张艳涛 一般我们都知道将web 应用打成war包,放到tomcat的webapp目录下,就是部署了,这是部署方法1 第2种部署方法我们也知道,就是讲web应用的文件夹拷贝到webap ...
- CS229 斯坦福大学机器学习复习材料(数学基础) - 线性代数
CS229 斯坦福大学机器学习复习材料(数学基础) - 线性代数 线性代数回顾与参考 1 基本概念和符号 1.1 基本符号 2 矩阵乘法 2.1 向量-向量乘法 2.2 矩阵-向量乘法 2.3 矩阵- ...
- python打包exe之pyinstaller用法
pyinstaller可以将python写好的脚本打包成exe文件,方便windows用户在没有python环境下运行.这个程序完全跨平台,包括Windows.Linux.Mac OS X等多个操作系 ...
- OpenFaaS实战之八:自制模板(maven+jdk8)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Windows 系统安装 git基础小白的简单操作包含基本输入命令
首先 去官网下载git应用 https://git-scm.com/downloads 点击前往 安装的操作也比较简单,一直点击下一步 安装完成之后 在空白桌面点击是否有 Git Gui ...
- 漏洞分析:CVE 2021-3156
漏洞分析:CVE 2021-3156 漏洞简述 漏洞名称:sudo堆溢出本地提权 漏洞编号:CVE-2021-3156 漏洞类型:堆溢出 漏洞影响:本地提权 利用难度:较高 基础权限:需要普通用户权限 ...