开发者

Difference between calling a python script by terminal and by PHP? Where is the Error?

I have a PHP script, that calls a python script by

$call_python = "python ../python/lp_3.py ".$author;
$python_output = Null;
$mystring = exec($call_python, $output_python);

This produces me an error in the log:

$ 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

If I do python python/lp_3.py in the terminal everything is fine. What do I miss?

Edit:

After the suggestion of @S.Lott I had a look at the variables PA开发者_运维知识库TH and PYTHONPATH both in the terminal and in PHP.

In the terminal:

$ 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

As you can see, PYTHONPATH is empty.

In PHP:

echo getenv("PYTHONPATH"); // NOTHING
echo getenv("PATH"); // /usr/bin:/bin:/usr/sbin:/sbin

Perhaps I should mention that the first two lines in my python script are

#!/usr/bin/env python
# encoding: utf-8

I am open for suggestions. =)

Edit2:

I checked every installed python version on my mac. I found out, that python2.7 has no MySQLdb installed. Is there a way to tell PHP not to use python2.7 and to use e.g. python2.6 instead? I tryed toying with setenv() in PHP but I couldn't figure out how to use it properly, and I don't even know if this is the right approach.


In your PHP code, you're just calling "python", and letting PHP decide which version of Python to use. Use an explicit path to a specific Python binary, (e.g. /usr/bin/python2.6).

You need to know the exact path to the version of Python that has MySQLdb installed.


$call_python = "/opt/local/bin/python2.6 ../python/lp_3.py ".$author;
$python_output = Null;
$mystring = exec($call_python, $output_python);

did the job. Like @AJ pointed out, I had to tell python which version to chose. I chose a version where MySQLdb was available and all was fine.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜