2014-08-31 64 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