我在 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 就螺丝钉了。我已将 sys.stderr = sys.stdout 包含在我的 python 文件中,当我运行我的 php 代码时,它会返回:
AttributeError: 'module' object has no attribute 'removeSpace'
有什么建议吗?
最佳答案
我最近遇到了这样的问题。事实证明,PHP 的 exec
没有将环境变量传递给它执行的程序,因此 Python 没有看到 $PYTHONPATH
,并且不知道在哪里导入模块来自。
我不知道如何从 PHP 中解决这个问题,但在我们的例子中,将导入的包符号链接(symbolic link)到与脚本相同的目录使其工作。
关于python 导入文件时 php exec 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7043549/