2014-08-31 2 views
0

Я пытаюсь создать веб-сервер, который в конечном итоге вызывает питон скрипт («MyScript.py») из PHP коды с помощью следующей командыпользователь WWW-данные не может импортировать установленный питон модули

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

MyScript. py действительно содержит код, который использует RDkit и другие модули, такие как numpy.
Когда я запускаю этот MyScript.py от пользователя (MKT) ... он работает как шарм.

Но проблема возникает, когда она выполняется из скрипта 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/и это следующий результат, если запускать их из МКТ пользователь

[email protected]$ python -v 

, а затем в питона среде:

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 =/opt/RDKit_2013_06_1_;' _export LD_LIBRARY_PATH = $ RDBASE/Библиотека: $ LD_LIBRARY_PATH_ _export PYTHONPATH = $ RDBASE: $ PYTHONPATH_ Пожалуйста, предложите мне, как это сделать ... ??? –

+0

Решил эту проблему слишком ........ для других людей вы можете ссылаться на этот пост [http://ubuntuforums.org/showthread.php?t=1546404] –

+0

Приятно слышать! BTW в Python вы можете установить переменные env с помощью 'os.environ' или' os.putenv() ': https://docs.python.org/2/library/os.html#os.environ – Messa

Смежные вопросы