我在使用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
答案 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包的源代码。您可以将其代码复制到源目录,并进一步工作。但我建议这是尝试的最后手段。