【发布时间】:2020-01-21 11:00:44
【问题描述】:
首先,很抱歉,这似乎是一个重复的问题。但老实说,没有什么对我有用。在这里搜索了几个小时。
好的,所以我有一个名为label_image.py的python文件,代码如下:
import numpy as np
import tensorflow as tf
print("TEST")
当我尝试通过 PHP 文件调用脚本时:
$outpt = shell_exec('python label_image.py');
var_dump($outpt);
这将返回 NULL。
但是如果我在python文件中去掉tensorflow的导入,就是这样的:
import numpy as np
print("TEST")
并运行 PHP 文件,它会输出以下内容:
string(5) "TEST "
通过这个测试,可以推断出导入Tensorflow的那一行导致返回NULL。
我尝试将它放在我的 PHP 文件之上,正如我在另一个 stackoverflow 线程上所读到的那样:
PUTENV("/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/");
但它仍然不起作用。顺便说一下,我使用的是 Mac OS。
我将不胜感激。
谢谢。
【问题讨论】:
-
从 shell 运行
python label_image.py会发生什么? -
使用
exec()检查程序退出代码。 python脚本很可能找不到tensorflow并抛出一些异常/错误。 -
我唯一想到的是 tensorflow 安装错误。尝试从 shell 运行脚本,看看它是否会引发错误或其他问题。如果退出代码不是 0,我很确定
shell_exec将返回null。 -
@TomKarzes ,如果从 shell 运行意味着从终端运行它,它会产生预期的输出(不是 null,而是打印 TEST)
-
@AniketSahrawat 我还没有运行
exec(),但是python脚本本身可以完美地与tensorflow配合使用,即使它是从终端执行的。仅从 PHP 调用它会导致此错误 (NULL)。对不起,如果我理解错了。
标签: php python python-3.x macos tensorflow