LINUX.ORG.RU

Проблема с модулями Python

 ,


0

2

Добрый день. Вызываю из PHP скрипта python скрипт

passthru('python bla.py 2>&1');
Однако получаю ошибку
 
Traceback (most recent call last): File "bla.py", line 5, in import requests ImportError: No module named requests
Хотя если вызвать напрямую этот скрипт то ошибки не будет.

Очевидно что разница только в пользователях (www-data и мой обычный) Так вот вопрос - почему для пользователя www-data не виден модуль requests скачанный из под %username% и что делать

Ubuntu 14

★★

Последнее исправление: Andreezy (всего исправлений: 1)
Ответ на: комментарий от Andreezy

твои опции:

  • установить модуль в систему (желательно не через pip)
  • создать виртуальное окружение, установить в него модуль и активировать окружение перед запуском скрипта
eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

Почему такой геморрой?? У меня модулей то много и мне их все инсталлить руками?

Что удивительно такая проблема только с python 2 Python 3 работает исправно под любым пользователем

Andreezy ★★
() автор топика
Ответ на: комментарий от Andreezy

ничего удивительного, сейчас мало пакетов осталось, которые используют python2, соответственно мало модулей для него в системе установлено. а для python3 все основные наиболее популярные модули в системе скорее всего есть

eternal_sorrow ★★★★★
()

Очевидно что разница только в пользователях

И переменных окружения

requests есть в репах дебиана/убунты. Зачем ставить его pipом? Если уже используешь pip то разберись что именно он делает и как им пользоваться

MrClon ★★★★★
()
Последнее исправление: MrClon (всего исправлений: 1)
Ответ на: комментарий от MrClon

Решил проблему следующим образом

sudo mkdir /var/www/.local
sudo mkdir /var/www/.cache
sudo chown www-data.www-data /var/www/.local
sudo chown www-data.www-data /var/www/.cache
sudo -H -u www-data pip install requests
Andreezy ★★
() автор топика
Ответ на: комментарий от Andreezy

Не проще от рута поставить?
И если это твой код то используй пу3, пу2 помрет через год. И лучше aiohttp вместо requests.

KillTheCat ★★★★★
()

скорее всего, у тебя просто разные питоны стартуют. Попробуй в passthru передать абсолютный путь

Chubakur ★★
()
Ответ на: комментарий от Andreezy

Да клал я на этот python 2

Бывает, что ты кладёшь на питон, а в твоём случае питон кладёт на тебя.

kukuruku ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.