2016-11-30 77 views
0

我有一个python代码,它运行在我的终端并打印结果。我写了一个php代码,它使用exec(“python example.py argument_1”)执行python代码。 php代码还在终端执行时输出结果。从浏览器/ curl请求URL时,没有名为lxml的模块

但是,当我尝试从浏览器(或)通过curl请求调用php时,php的结果未显示。 Apache错误日志显示以下消息。

Traceback (most recent call last): 
    File "./example.py", line 3, in <module> 
    from lxml import etree 
ImportError: No module named lxml 

请看这个问题。

解决方案: 我曾与Python版本冲突

EXEC( “在/ usr/local/bin目录/蟒蛇example.py ARGUMENT_1”)解决了我的问题

回答

0

我认为你可以打印sys.path(模块将由python通过那些路径),以获得更多细节。你可能在linux上开发你的代码。
在linux中,每个用户都有不同的sys.path。
例如,我用运行Python来获得在python sys.path中,

'/usr/bin', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0', 
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client', 
'/usr/lib/python2.7/dist-packages/IPython/extensions'] 

使用其他用户在python得到的sys.path

['', 
'/home/mahome/anaconda2/bin', 
'/home/mahome/anaconda2/lib/python27.zip', 
'/home/mahome/anaconda2/lib/python2.7', 
'/home/mahome/anaconda2/lib/python2.7/plat-linux2', 
'/home/mahome/anaconda2/lib/python2.7/lib-tk', 
'/home/mahome/anaconda2/lib/python2.7/lib-old', 
'/home/mahome/anaconda2/lib/python2.7/lib-dynload', 
'/home/mahome/anaconda2/lib/python2.7/site-packages', 
'/home/mahome/anaconda2/lib/python2.7/site-packages/Sphinx-1.4.1-py2.7.egg', 
'/home/mahome/anaconda2/lib/python2.7/site-packages/setuptools-23.0.0-py2.7.egg', 
'/home/mahome/anaconda2/lib/python2.7/site-packages/IPython/extensions', 
'/home/mahome/.ipython'] 

所以,你也许使用不同的用户来执行你的代码。

+0

从浏览器调用php文件时,我没有root权限。同样,我从命令行运行它作为非特权用户,但在第二种情况下我得到结果。我在OS X中使用apache。 –

+0

您可以在这两种情况下打印sys.path并比较结果。这可能是有帮助的 – mahome

+0

路径似乎是相同的。 –

相关问题