linux 开放端口 flask,从python中的flask路由调用LinuxPowerShell中的.ps1脚本

我试图在PowerShellforLinux中调用一个.ps1脚本,通过传递一个变量并触发它来响应对flask/python API的Web调用。

在本例中,所有文件都在同一个目录中—理想情况下,.ps1脚本和其他与它需要执行的操作相关的文件都在另一个目录中,但是为了测试,它们都在我的venv的主目录中。

如果我手动运行以下代码,通过

my_venv >> python script.py

# this is script.py

import subprocess

arg1 = 'xyz'

arg2 = 'abc'

subprocess.run(['pwsh', '.\example.ps1', arg1, arg2])

它能正常工作。PowerShell将运行,脚本中的操作

example.ps1

将执行。但是,如果我将相同的python代码添加到flask应用程序路由中,那么它可以由类似这样的API请求触发:

from flask import Flask, request

import subprocess

app = Flask(__name__)

app.debug = True

# example route

@app.route('/example/', methods=['GET'])

def example():

var1 = request.args.get('var1')

arg1 = var1

arg2 = 'abc'

subprocess.run(['pwsh', '.\example.ps1', arg1, arg2])

return ('success', 200)

它什么都不做。烧瓶调试出错:

Exception: builtins.FileNotFoundError: [Errno 2] No such file or directory: 'pwsh'

这让我觉得它找不到

pwsh

但我不清楚在这种情况下如何解决这个问题。在Windows中,您可以将powershell.exe可执行文件的路径放在命令中,但这显然不是它在这里的工作方式。

上面的变量是一个注释-我尝试过它,没有,只是让一个值传递给

var1

通过

GET

然后忽略它并硬编码

arg1

去测试,没什么区别。真正的代码确实需要变量。

有什么明显的愚蠢的事情我做错了吗?这个问题似乎没有被问到Linux,尽管有一些类似的Windows问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值