2016-11-30 56 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

路徑似乎是相同的。 –

相關問題