У меня есть сценарий PHP, который вызывает сценарий Python
$call_python = "python ../python/lp_3.py ".$author;
$python_output = Null;
$mystring = exec($call_python, $output_python);
. В журнале возникает ошибка:
$ vi logs/error_log shows
....
Traceback (most recent call last):
File "../python/lp_3.py", line 14, in <module>
import MySQLdb
ImportError: No module named MySQLdb
Если я выполняю python python/lp_3.py
вТерминал все хорошо.Что мне не хватает?
Редактировать:
После предложения @ S.Lott я посмотрел на переменные PATH
и PYTHONPATH
как в терминале, так и в PHP.
В терминале:
$ echo $PYTHONPATH
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/texbin:/usr/X11/bin
Как видите, PYTHONPATH
пусто.
В PHP:
echo getenv("PYTHONPATH"); // NOTHING
echo getenv("PATH"); // /usr/bin:/bin:/usr/sbin:/sbin
Возможно, мне следуетОтметим, что первые две строки в моем скрипте Python:
#!/usr/bin/env python
# encoding: utf-8
Я открыт для предложений.=)
Edit2:
Я проверил каждую установленную версию Python на моем Mac.Я обнаружил, что в python2.7 не установлен MySQLdb.Есть ли способ сказать PHP не использовать python2.7 и использовать вместо этого, например, python2.6?Я пытался играть с setenv()
в PHP, но я не мог понять, как правильно его использовать, и я даже не знаю, правильный ли это подход.