【发布时间】:2014-06-03 11:16:16
【问题描述】:
我有以下 Python 代码,后面会用 PHP 调用:
#!/usr/bin/env python
"""Code name: test.py"""
import BeautifulSoup
import sys
myargs = sys.argv[1]
mylist = ["foo bar qux", "uix nan col"]
for chunk in mylist:
mems = chunk.split()
mems.append(myargs)
print mems
并且BeautifulSoup模块安装在这里:
$ echo $PYTHONPATH
/home/pdubois/.local/lib/python2.7/site-packages
现在这是调用它的 PHP 代码
<HTML>
<HEAD>
<TITLE>MYCODE</TITLE>
</HEAD>
<BODY>
<BR>
<?php echo '<p>This is the output of my code:</p>'; ?>
<?php
exec(`python /misc/path_to_mycode/test.py param1`,$output);
var_dump($output)
?>
</BODY>
</HTML>
上面的index.php 代码位于/var/www/html。
我得到的结果是这样的:
array(4) { [0]=> string(34) "Traceback (most recent call last):"
[1]=> string(65) " File "/u21/pdubois/my_project/test.py", line 15, in "
[2]=> string(24) " import BeautifulSoup"
[3]=> string(42) "ImportError: No module named BeautifulSoup" }
当我在 test.py 中注释掉 import BeautifulSoup 时。 PHP 代码返回正确的预期结果:
array(2) { [0]=> string(31) "['foo', 'bar', 'qux', 'mcpip1']"
[1]=> string(31) "['uix', 'nan', 'col', 'mcpip1']" }
问题是我应该怎么做才能让 PHP/Python/Apache 识别 BeautifulSoup 或任何本地安装的模块?
【问题讨论】:
-
eval() 执行 PHP 代码;你可能想要exec()
-
@MarkBaker: 错误是由
exec()而不是eval()引起的。感谢您指出。我在做OP时犯了一个错误。我已经更新了我的 OP。
标签: php python html apache web-services