【问题标题】:PHP returns NULL running Python Script with TensorflowPHP 返回 NULL 使用 Tensorflow 运行 Python 脚本
【发布时间】: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


【解决方案1】:

如果定位张量流库有问题,我想你可以试试这样设置PYTHONPATH

<?php

// PYTHONPATH setup
$pythonpath = getenv('PYTHONPATH'); // see if there is current setting
$additional = '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/'; // the location where the Tensorflow library is installed.
putenv(($pythonpath === false) ? "PYTHONPATH=$additional" : "PYTHONPATH=$pythonpath:$additional");

【讨论】:

  • 这很遗憾行不通。我的 Pythonpath 是错误的,我试图将它设置为我的实际 python 路径(我在这篇文章中写的路径是错误的),但仍然无法正常工作。
  • @SeanSaoirse:php -r 'var_dump(shell_exec(\'python -c "import sys; print(\\\'\n\\\'.join(sys.path))"\'));' 显示了什么?它是否包含您的 TensorFlow 安装路径?
  • @SeanSaoirse:另外,php -r 'var_dump(shell_exec(\'python -c "import tensorflow"\'));' 返回什么?
猜你喜欢
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 2017-12-06
相关资源
最近更新 更多