Я работаю над проектом, который включал автоматическое создание диаграмм информации и другой аналитической информации. Для этого у меня есть набор скриптов, вызываемых автоматически из одного основного скрипта. Один из них, генерирующий все графики, называется analysis.py
, используя библиотеку matplotlib. Но по какой-то причине он не работает.
Вот начало файла, в который я импортирую matplotlib:
#!/usr/bin/python
import csv
from datetime import datetime
import numpy as np
import convert
from itertools import groupby
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
Всякий раз, когда я запускаю этот скрипт вручную в оболочке, он работает просто отлично:
root@ubuntu:/var/www/Project$ python /var/www/Project/analysis.py
root@ubuntu:/var/www/Project$
Кроме того, когда я импортирую matplotlib вручную, он также работает нормально:
root@ubuntu:/var/www/Project$ python
Python 2.7.3 (default, Jun 22 2015, 19:33:41)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
>>> from matplotlib.backends.backend_pdf import PdfPages
>>>
Но всякий раз, когда analysis.py
Вызывается из любого места (PHP-скрипт, другой Python-скрипт и т. д.). Ошибка при импорте statmenet для matplotlib. Он не возвращает никаких сообщений об ошибках (или я не знаю, как получить к ним доступ), но я выделил, что ошибка возникает в статистике импорта для matplotlib методом проб и ошибок.
Так почему же не импортировать matplotlib в некоторых ситуациях, и как мне обойти это?
Обновить:
Я обнаружил, что вызов скрипта из php и python вызывает проблемы по разным причинам. С php я использовал этот скрипт здесь:
$input = 'python /var/www/Project/analysis.py';
$command = escapeshellcmd($input);
$output = shell_exec($command);
echo '<pre>'.$output.'</pre>';
Вот где сценарию не удалось импортировать библиотеку matplotlib в analysis.py
, Это правда, даже когда я позвонил analysis.py
из другого скрипта Python (test.py
), который в свою очередь называется в php.
Но когда я бегу test.py
непосредственно:
import os
command = "python /var/www/Project/analysis.py"os.system(command)
На этот раз импортирует matplotlib, но возникает другая проблема. Всякий раз, когда я пытаюсь прочитать определенный файл, он возвращает пустую строку:
with open("/var/www/Project/profile_data.txt") as csvfile:
reader = csv.reader(csvfile)
next(reader)
Потому что я получаю эту ошибку:
next(reader)
StopIteration
Что означает, что файл пуст, когда его явно нет.
Задача ещё не решена.
Других решений пока нет …