gpt4 book ai didi

php - 使用 shell_exec 从 usr/local/bin 执行 python3

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:10 24 4
gpt4 key购买 nike

我想用 python3 版本 3.6.1 从 php 中运行一个脚本

 $data = escapeshellarg($data);
$resultpy = shell_exec("/usr/local/bin/python3 path/to/myscript.py 2>&1 $data");

$data json 对象包含 float ,我想在 python 中对其进行一些计算。我确实按照 Gordon Davisson 的建议为 python3 设置了一个本地 bin Cannot create a symlink inside of /usr/bin even as sudo因为在 Mac OS X 10.9.5 上安装后 python3 没有出现在/usr/bin/中。我对 python2 做了同样的事情,以检查这在原则上是否可行。使用时

$resultpy = shell_exec("/usr/local/bin/python2 path/to/myscript.py 2>&1 $data"); 

,我可以运行 python 脚本并获得预期的输出,但在使用

时却不行
$resultpy = shell_exec("/usr/local/bin/python3 path/to/myscript.py 2>&1 $data"); 

我还可以分别使用/usr/local/bin/python3 或/usr/local/bin/python2 在 shell 中成功调用 python3 和 python2。

会不会是 python 脚本本身有问题(可能是 python3 与 python2 相比有一些语法变化)?

from collections import OrderedDict
import sys, json
import scipy
import scipy.cluster.hierarchy as sch

try:
data = json.loads(sys.argv[1], object_pairs_hook=OrderedDict)

except (ValueError, TypeError, IndexError, KeyError) as e:
print json.dumps({'error': str(e)})
sys.exit(1)

print json.dumps(data)

我还在 python 脚本的顶部添加了一个 she-bang 行,但这并没有按预期解决问题。所有导入模块都安装在两个版本中。非常感谢任何帮助!

最佳答案

如果你想让它在 python3 中工作,你需要用 print 更改行

from collections import OrderedDict
import sys, json
import scipy
import scipy.cluster.hierarchy as sch

try:
data = json.loads(sys.argv[1], object_pairs_hook=OrderedDict)

except (ValueError, TypeError, IndexError, KeyError) as e:
print( json.dumps({'error': str(e)}) )
sys.exit(1)

print( json.dumps(data) )

关于php - 使用 shell_exec 从 usr/local/bin 执行 python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44712803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com