0
点赞
收藏
分享

微信扫一扫

PHP调用Python无返回或提示No Module


问题:自己通过命令行执行python正常,但通过php调用就没有反应。

解决方法
1、首先检查一下php有没有执行权限,简单粗暴的:

sudo chmod 777 xxx.php

2、Python如果有中文返回,似乎需要额外操作。可以先去掉中文排除掉其他原因,也可以尝试以下操作:
在python文件头部加上

import codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())

或者,php脚本中在调用python命令的地方加上:

// 设置字符集,重要!!!! 非常重要。
$set_charset = 'export LANG=en_US.UTF-8;';
$cmd = "python3 main.py gen --model-path='checkpoints/tang_199.pth' --pickle-path='tang.npz' --start-words='".$start_words."' --prefix-words='".$prefix_words."' --use-gpu=False --acrostic='True'";
//echo $cmd;
$poem = exec( $set_charset.$cmd, $output, $res );

3、如果不行,则将php调用语句的最后面加上​​2>&1​​,如

echo shell_exec("python3 xxx.py 2>&1");

这样,再去网页执行php时候,就会显示具体的错误原因

4、如果是普通语法错误,修改即可;但如果提示​​No module​​,是因为你当前登录账户(非root)的环境,跟web的环境不一样,所以你通过ssh安装的库,在web下找不到。可以通过加​​sudo -H​​来解决,如:

sudo -H pip3 install pyDes

PHP调用Python无返回或提示No Module_php


举报

相关推荐

0 条评论