导入从PHP调用Python的astropy

时间:2013-09-09 01:30:10

标签: php python astropy

我想从PHP(LAMP)运行Python脚本。该脚本导入了astropy,由于某种原因,我无法成功执行此操作。我可以使用下面复制的示例文件重现基本问题。我不认为这是一个权限或Python路径问题。例如,我可以导入numpy,scipy等。我还可以创建一个Python脚本来读取和写入同一目录(/ www / var)上的文件。我在/ usr / bin / python上有标准Python,还有Anaconda版本。两者都有熵,无论我使用哪一个,我都会遇到同样的问题。

我怀疑它是关于像我一样运行代码(工作正常)或www-data(来自Web浏览器)的东西。但是,当我从Linux终端执行此操作时:sudo -u www-data php test.php,代码按预期工作。

这是test.php:

<?php

echo "<p>begin test.php</p>";
system("python test.py");
echo "<p>end test.php</p>";

?>

并且test.py:

print("this is test.py ...")

import sys, numpy, scipy, matplotlib
print("passed the import sys, numpy, scipy, matplotlib ...")

import astropy
print("passed the import astropy ...")

我打开test.php时得到的是:

begin test.php
this is test.py ... passed the import sys, numpy, scipy, matplotlib ... ERROR: TypeError: coercing to Unicode: need string or buffer, NoneType found [genericpath]

end test.php

1 个答案:

答案 0 :(得分:1)

你在运行什么版本的Astropy?顺便提一下,我很确定这是一个已知且已修复的问题:https://github.com/astropy/astropy/pull/952

此外,当前版本的Astropy要求您指定库可以写入的配置目录。它不一定知道/ var / www是用于Web服务器的正确“home”目录,因此您需要设置环境变量XDG_CONFIG_HOME=/var/www(确保/var/www/astropy目录也存在)

我认为有计划简单地这样做,以便在没有这种额外设置的情况下至少可以导入库。