PHP Exec не удается, когда Python импортирует файл - PullRequest
0 голосов
/ 12 августа 2011

У меня есть этот код в php:

$var = "something";
$result = exec("python /somePath/someFile.py $var");
print $result;

и мой someFile.py выглядит так:

import functions as f

x = f.removeSpace("hey   there")
print x 

Теперь без функций импорта все в порядке, но когда я пытаюсь импортировать другой модуль, то винты php. Я включил sys.stderr = sys.stdout в мой файл python, и когда я запускаю свой php-код, он возвращает:

AttributeError: 'module' object has no attribute 'removeSpace'

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 12 августа 2011

У меня недавно была такая проблема.Оказалось, что PHP exec не передавал переменные окружения в программу, которую он выполнял, поэтому Python не видел $PYTHONPATH и не знал, откуда импортировать модуль.

Iне знаю, как это исправить из PHP, но в нашем случае символическая ссылка импортированного пакета в ту же директорию, в которой скрипт работал,

1 голос
/ 12 августа 2011

Проверьте модуль functions, проверьте, не определили ли вы функцию removeSpace.

Это не проблема PHP, это проблема Python, вы, возможно, забыли определить эту функцию.

0 голосов
/ 12 августа 2011

Я действительно не знаю о python, но я думаю, что проблема в someFile.py, не могу найти ваш functions -модуль.Поскольку вы выполняете его с PHP, для pwd будет установлено значение php pwd, а не /somePath/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...