没有使用php从python命名为lxml的模块

时间:2014-01-30 06:55:41

标签: php python python-2.7 lxml elementtree

我在使用python的插件 lxml 时遇到了问题。当我执行python python.py时,它可以在服务器中运行,但是当我使用php system("python python.py")时,它会变为空白。

Python代码:

from lxml import etree

# create XML 
root = etree.Element('root')
root.append(etree.Element('child'))
# another child with text
child = etree.Element('child')
child.text = 'some text'
root.append(child)

# pretty string
s = etree.tostring(root, pretty_print=True)
print s

我使用tail -f /var/log/httpd/error_log来了解我的php发生了什么。

我收到了这个错误:

Traceback (most recent call last):
File "xml.py", line 1, in ?
from lxml import etree
ImportError: No module named lxml

2 个答案:

答案 0 :(得分:2)

安装了lxml包在哪里?

错误表明执行python命令时它不在PYTHONPATH上。您需要确保PYTHONPATH上有lxml。如果安装在非标准位置,则很可能就是这种情况。

如果lxml中安装了site-packages for Python 2.7,可能会使用混合的python版本。可能值得限定您期望使用的python版本(并安装lxml):

system("python2.7 python.py")

答案 1 :(得分:2)

尝试在终端上运行以下命令:

> whereis python

这将告诉您python的安装位置。例如,它可以是/ usr / local / bin。获得正确的路径后,您可以在系统命令中引用完整路径。

如果上述方法不起作用,请尝试在终端上执行此操作

python
>>> import lxml
>>> print lxml
<module 'lxml' from '<your_path>/site-packages/lxml-3.2.3-py2.7.egg/lxml/__init__.pyc'>

您应该得到类似于上面的回复。这将告诉您从哪里加载lxml包。根据此路径,您可以检查加载此包时可能出现的问题。

如果上述选项不起作用,您可以卸载lxml软件包,然后使用以下选项重新安装:

easy_install -Z lxml

这将为您提供lxml包的源代码。您可以将其代码复制到源目录,并进一步工作。但我建议这是尝试的最后手段。