前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP调用Python无返回或提示No Module

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

作者头像
小锋学长生活大爆炸
发布2021-06-17 20:07:42
1.4K0
发布2021-06-17 20:07:42
举报

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


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

代码语言:javascript
复制
sudo chmod 777 xxx.php

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

代码语言:javascript
复制
import codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())

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

代码语言:javascript
复制
// 设置字符集,重要!!!! 非常重要。
$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,如

代码语言:javascript
复制
echo shell_exec("python3 xxx.py 2>&1");

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

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

代码语言:javascript
复制
sudo -H pip3 install pyDes

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档