2014-08-31 65 views
0

我試圖創建一個Web服務器,最終調用從PHP代碼的Python腳本(「MyScript.py」)用下面的命令www數據的用戶無法導入安裝Python模塊

echo exec("MyScript.py ....some arguments") 

的MyScript。 py實際上包含一個使用RDkit和其他模塊(如numpy)的代碼。
當我從用戶(MKT)運行這MyScript.py ....它的作品就像一個魅力。

但是,當它從服務器的PHP腳本執行時會出現問題。 在/var/www/log/apache2/error.log錯誤信息如下:

ImportError: No module named rdkit 
Traceback (most recent call last): 
File "./preditar/preditar.py", line 7, in <module> 
from rdkit import Chem 

我rdkit被安裝在/ opt/RDKit_2013_06_1/rdkit /如果從運行它們這個結果如下MKT用戶

[email protected]$ python -v 

,然後在Python環境:

import rdkit 

這裏是輸出:

import rdkit # precompiled from /opt/RDKit_2013_06_1/rdkit/\__init__.pyc 

我認爲用戶的www數據執行這個不能訪問這個模塊...那麼如何導入這MyScript.py ???

注:當我修改MyScript.py到一個簡單的腳本,它只需創建一個文件,並寫入數據到它...它正常工作,沒有這意味着我沒有相關權限的任何問題的任何問題。

回答

0

看起來像Python導入搜索路徑的問題。嘗試更改導入這樣的:

import sys 
sys.path.insert(0, "/opt/RDKit_2013_06_1") 
import rdkit 
+0

是的,我做到了......但作爲安裝在其他文件夾RdKit它需要我添加下列環境變量。 '_export RDBASE = /選擇/ RDKit_2013_06_1_;' _export LD_LIBRARY_PATH = $ RDBASE/lib:$ LD_LIBRARY_PATH_ _export PYTHONPATH = $ RDBASE:$ PYTHONPATH_ 請教我如何做到這點... ??? – 2014-08-31 10:38:47

+0

解決了這個問題太........其他人可以參考這篇文章[http://ubuntuforums.org/showthread.php?t=1546404] – 2014-08-31 14:16:46

+0

很好聽! BTW在Python中,你可以使用'os.environ'或'os.putenv()'設置ENV變量:https://docs.python.org/2/library/os.html#os.environ – Messa 2014-08-31 20:25:08