我有以下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" }
当我注释掉import BeautifulSoup
在test.py。PHP代码返回正确的预期结果:
array(2) { [0]=> string(31) "['foo', 'bar', 'qux', 'mcpip1']"
[1]=> string(31) "['uix', 'nan', 'col', 'mcpip1']" }
问题是我应该怎么做才能使PHP/Python/Apache识别BeautifulSoup或任何本地安装的模块?
您为BeautifulSoup显示的目录出现在您的主目录中。但是我怀疑Apache是以您的方式运行的:它很可能是以www
的方式运行的。因此,您需要为该用户或全局安装模块。
当然,更好的方法是坚持使用一种语言:如果你想运行Python,那么使用Python框架编写网站;或者使用PHP HTML解析器。