php exec在python导入文件时失败

1 投票
3 回答
979 浏览
提问于 2025-04-16 23:29

我有一段PHP代码:

$var = "something";
$result = exec("python /somePath/someFile.py $var");
print $result;

还有我的someFile.py文件是这样的:

import functions as f

x = f.removeSpace("hey   there")
print x 

现在,如果不使用导入功能,一切都正常,但当我尝试导入另一个模块时,PHP就出问题了。我在我的Python文件里加了sys.stderr = sys.stdout,然后当我运行我的PHP代码时,它返回了:

AttributeError: 'module' object has no attribute 'removeSpace'

有什么建议吗?

3 个回答

0

我对 python 不是很了解,但我觉得问题可能出在 someFile.py 找不到你的 functions 模块。因为你是从 PHP 运行它的,所以它的当前工作目录(pwd)会设置为 php 的当前工作目录,而不是 /somePath/

1

检查一下你的 functions 模块,看看你是否定义了一个叫 removeSpace 的函数。

这不是 PHP 的问题,而是 Python 的问题,你可能忘记定义这个函数了。

2

我最近遇到过类似的问题。结果发现,PHP的 exec 命令没有把环境变量传递给它执行的程序,所以Python看不到 $PYTHONPATH,也不知道从哪里导入模块。

我不知道怎么从PHP来解决这个问题,但在我们的情况下,把导入的包链接到和脚本同一个目录下就能正常工作了。

撰写回答