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

时间:2016-08-27 02:04:37

标签: 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.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无法找到 matplotlib pylab 模块。

我想注意一些事情:

  • 我成功运行了sudo apt-get install python-numpy python-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-packages分开,这就是它们被自动安装到的地方),但不幸的是我仍然收到上面的错误。

问题:这个问题可能是什么原因?

0 个答案:

没有答案