Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python在从PHP调用时找不到模块?_Php_Python_Python 2.7_Matplotlib_Python Import - Fatal编程技术网

为什么Python在从PHP调用时找不到模块?

为什么Python在从PHP调用时找不到模块?,php,python,python-2.7,matplotlib,python-import,Php,Python,Python 2.7,Matplotlib,Python Import,我使用php的exec()命令运行python脚本,但收到以下错误: Array ( [0] => Traceback (most recent call last): [1] => File "/vagrant/SRC_Local_Website/EAF_MODEL/EAF_Model.py", line 20, in [2] => from pylab import * [3] => File "/usr/lib/pymodules/python2.7/pylab.p

我使用php的
exec()
命令运行python脚本,但收到以下错误:

Array ( [0] => Traceback (most recent call last): [1] => File "/vagrant/SRC_Local_Website/EAF_MODEL/EAF_Model.py", line 20, in [2] => from pylab import * [3] => File "/usr/lib/pymodules/python2.7/pylab.py", line 1, in [4] => from matplotlib.pylab import * [5] => File "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 774, in [6] => rcParams = rc_params() [7] => 
File "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 692, in rc_params [8] => fname = matplotlib_fname() [9] => File "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 604, in matplotlib_fname [10] => 
fname = os.path.join(get_configdir(), 'matplotlibrc') [11] => File "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 253, in wrapper [12] => ret = func(*args, **kwargs) [13] => 
File "/usr/lib/pymodules/python2.7/matplotlib/__init__.py", line 478, in _get_configdir [14] => raise RuntimeError("Failed to create %s/.matplotlib; consider setting MPLCONFIGDIR to a writable directory for matplotlib configuration data"%h) [15] => RuntimeError: Failed to create /var/www/.matplotlib; consider setting MPLCONFIGDIR to a writable directory for matplotlib configuration data )
据我所知,python无法找到matplotlibpylab模块

我想指出的是:

  • 我已成功运行:
    sudo apt get install python numpython scipy python matplotlib
  • 如果我直接从shell运行这个python文件(例如,
    $python myFile.py
    ),程序运行正常,没有错误
  • 在我的php文件中,我试图用
    putenv('PYTHONPATH=…
    )指定这些文件的位置(见下文)
例如,我的导入如下所示:

from casadi import *
from numpy import *
from pylab import *
import matplotlib.pyplot as plt
最初,找不到cadADi,因此我添加了:

putenv('PYTHONPATH=$PYTHONPATH:/vagrant/SRC_Local_Website/EAF_MODEL/python_plugins/casadi-py27-np1.9.1-v3.0.0');
这不再是一个问题

与numpy类似,我必须补充:

putenv('PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/dist-packages');
最后,我试图补充:

putenv('PYTHONPATH=$PYTHONPATH:/usr/lib/pymodules/python2.7');
这就是mathplotlib和pylab所在的位置(我不知道为什么它们与
dist包分离,这正是它们自动安装到的位置),但不幸的是,我仍然收到上面的错误


问题:这个问题的原因是什么?

您是否可以检查脚本的工作目录(使用exec的目录)和Python解释器的位置?(
import os;print(os.getcwd()
)?另外,您是否尝试过从可移植的Python发行版(例如WinPython)运行代码?@armatita谢谢,我刚刚检查了这两个位置,php脚本和python文件都位于/vagrant/SRC_Local_Website/EAF_MODEL中,当我运行您指定的命令时,它也会返回上面的路径。我还没有使用可移植的发行版,但我现在会研究它。我指的是python解释器的位置,而不是e Python脚本。Python脚本正在运行(否则将不会“编译”您的脚本,也不会存在错误)。我怀疑您正在运行Python脚本,但系统路径与您所认为的不同(因此导入失败)。我可能对您有点误解,但遵循此处的帖子()输出是
/usr/bin/python
。我在php中运行python脚本时使用的命令也是:
exec('/usr/bin/python/vagrant/SRC_Local_Website/EAF_MODEL/EAF_MODEL.py 2>&1',$output);
这很奇怪?该命令应该给您一个完整的路径(因此它应该以python可执行文件结束)。但请注意,我是windows用户,在我看来,该路径类似于Linux系统(可能是Ubuntu?)中本机python解释器的文件夹。您能否确认您的电脑中只有python版本?(请尝试:
系统外壳中的python在哪里,或者
python在哪里2.7
)。如果您发现有多个版本,请尝试添加要在exec命令中使用的实际python发行版。很抱歉,没有更现成的答案。此时,我和您一样感到困惑。您可以检查脚本的工作目录(使用exec的)和python解释器的位置吗?(
import os;print(os.getcwd()
)?另外,您是否尝试过从可移植的Python发行版(例如WinPython)运行代码?@armatita谢谢,我刚刚检查了这两个位置,php脚本和python文件都位于/vagrant/SRC_Local_Website/EAF_MODEL中,当我运行您指定的命令时,它也会返回上面的路径。我还没有使用可移植的发行版,但我现在会研究它。我指的是python解释器的位置,而不是e Python脚本。Python脚本正在运行(否则将不会“编译”您的脚本,也不会存在错误)。我怀疑您正在运行Python脚本,但系统路径与您所认为的不同(因此导入失败)。我可能对您有点误解,但遵循此处的帖子()输出是
/usr/bin/python
。我在php中运行python脚本时使用的命令也是:
exec('/usr/bin/python/vagrant/SRC_Local_Website/EAF_MODEL/EAF_MODEL.py 2>&1',$output);
这很奇怪?该命令应该给您一个完整的路径(因此它应该以python可执行文件结束)。但请注意,我是windows用户,在我看来,该路径类似于Linux系统(可能是Ubuntu?)中本机python解释器的文件夹。您能否确认您的电脑中只有python版本?(请尝试:
系统外壳中的python在哪里,或者
python在哪里2.7
)。如果您发现您有多个版本,请尝试添加要在exec命令中使用的实际python发行版。很抱歉,没有更准确的答案。此时,我和您一样感到困惑。