Apache无法访问Python的模块'numpy'-Linux

康斯坦丁诺斯(Konstantinos Kritikakis)

我在Ubuntu 17.10上运行apache2。在php文件中有:

<?php
exec("python3 test_python.py 2>&1",$res);
for ($i=0; $i < sizeof($res); $i++) {
  echo $res[$i] . '<br>';
}
?>

test_python.py内部有:

import numpy as np
print("it works from here.");

不幸的是,我得到的结果是:

追溯(最近一次调用):文件“ test_python.py”,第1行,在导入numpy中作为np出现ModuleNotFoundError:没有名为“ numpy”的模块

当我通过终端运行脚本时,自己如下所示:

python3 test_python.py

它工作正常。我怀疑权限存在问题,但尚未找到解决方案。

随机

这看起来像一个PATH/PYTHONPATH问题。python3您从交互式shell中运行可能不一样的一个阿帕奇/ PHP运行; 和/或sys.path两种情况下可能会有所不同,因此numpy在一种情况下可以找到,而在另一种情况下却没有。

运行具有依赖项的Python脚本的最安全,最可靠的方法是使用创建虚拟环境virtualenv,将其激活,然后在其中安装dep:

cd /path/to/project             # go to your project dir
virtualenv -p python3 env       # create python3-based virtual environment
. env/bin/activate              # activate the virtual environment in env/
pip install numpy               # install all dependencies
deactivate                      # deactivate env

然后只需python从刚刚创建的虚拟环境(env/bin/python)中调用,即可从PHP运行Python脚本

<?php
exec("/path/to/project/env/bin/python test_python.py 2>&1", $res);
...

现在可以在中使用虚拟环境中安装的所有软件包test_python.py

要添加其他软件包,只需再次激活您的虚拟环境,然后pip在此处安装即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章