Я уже много лет перебираю эту проблему.
Я успешно развернул веб-сайт с флягой, содержащей граф .png изображение, которое я создал с помощью matplotlib.
Однако я хотел включить код matplotlib в свое приложение для работы с колбами, чтобы каждый раз при обновлении экрана график менялся, поскольку он использует случайно сгенерированные данные.
Я могу успешно развернуть свое приложение с помощью matplotlib, но я постоянно получаю сообщение об ошибке приложения, когда проверяю свой веб-сайт.
Он работает локально на моем компьютере без каких-либо проблем.
Вот шаги, которые я выполнил в командном терминале:
- Создание виртуальной среды
- pip install datetime, pandas, matplotlib, lorem, gunicorn
- easy_install -U распространять
- замораживание пунктов> needs.txt
Создал и протестировал разные Procfile, чтобы посмотреть, будет ли что-нибудь работать.
web: gunicorn gettingstarted.wsgi --log-file -
web: gunicorn --bind 0.0.0.0:$PORT app: app
веб: gunicorn -b: $ ПОРТ приложение: приложение
6
git init
heroku git:remote -a name-of-app
git add .
git commit -am "random text message"
git push heroku master
Он развернут, но продолжает появляться ошибка приложения.
Если я не включу matplotlib, он будет работать нормально.
Вот мой код для app.py
from flask import Flask
from flask import Flask, render_template, url_for, redirect
from datetime import datetime as dt
import numpy as np
import matplotlib.pyplot as plt
import lorem
app = Flask(__name__)
data = {["AAPL", "MSFT", "GOOG"][i]: np.random.randint(100, 400, 12) for i in range(3)}
data
plt.figure(figsize=(8, 5))
plt.plot(data["AAPL"])
plt.plot(data["MSFT"])
plt.plot(data["GOOG"])
plt.title("APPL v MSFT v GOOG Stock 2019", fontsize= 20)
plt.xlabel("Months", fontsize=20)
plt.ylabel("Price in $", fontsize = 20)
plt.legend(list(data.keys())[:3], fontsize=14, loc="best")
path = "C:/Users/Michael/Desktop/WEB4/flaskdeploy/static/"
plt.savefig(path + "stock.png", dpi = 300, bbox_inches = "tight");
#plt.show();
plt.tight_layout()
date = dt.now().strftime("%Y/%m/%d")
timeNow = dt.now().strftime("%H:%M:%S")
text = lorem.text()[:100]
@app.route("/")
def index():
return render_template("home.html", text = text, date=date, timeNow=timeNow)
if __name__ == "__main__":
app.run(debug=True)
Файл Мои требования .txt. Любая помощь будет принята с благодарностью. Спасибо!
certifi==2018.11.29
Click==7.0
cycler==0.10.0
DateTime==4.3
Flask==1.0.2
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10
kiwisolver==1.0.1
lorem==0.1.1
MarkupSafe==1.1.0
matplotlib==3.0.2
numpy==1.15.4
pandas==0.23.4
pyparsing==2.3.0
python-dateutil==2.7.5
pytz==2018.7
six==1.12.0
Werkzeug==0.14.1
wincertstore==0.2
zope.interface==4.6.0