#目的
flaskにpandas、plotly、MeCabを入れHerokuで簡単なwebアプリケーションを立ち上げ、簡単な形態素解析と集計をどこからでもできるようにしようとした。
Herokuのデプロイでハマったので、忘れないように記録。
#環境
Windows10
Python3.7
Anaconda
#やったこと
flask準備省略。
ローカルでは問題なし。
# -*- coding: utf-8 -*-
import os
import csv
from flask import *
from werkzeug.utils import secure_filename
import pandas as pd
import plotly
import pathlib
import MeCab
app = Flask(__name__)
@app.route("/")
def init():
cmd = "pip freeze"
out = os.popen(cmd).read()
return out
@app.route("/0")
def mecab():
sentence = """AWSの有名なサービスにAmazon Elastic Compute Cloud (EC2) とAmazon Simple Storage Service (S3) がある。
これまでのクライアントが保有していた物理的なサーバファームと比較してAWSは大規模な計算処理能力を速やかに提供出来ることが強みである。"""
t = MeCab.Tagger('')
out = t.parse(sentence)
return out
if __name__ == '__main__':
app.run()
gunicorn==19.9.0
click==7.1.1
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
numpy==1.18.3
pandas==1.0.3
plotly==4.6.0
python-dateutil==2.8.1
pytz==2019.3
retrying==1.3.3
six==1.14.0
Werkzeug==1.0.1
xlrd==1.2.0
mecab-python3
web: gunicorn main:app
https://github.com/sunny4381/heroku-buildpack-linuxbrew.git
mecab
mecab-ipadic
$ git init
$ heroku create flask-mecab-heroku
$ heroku create --buildpack https://github.com/heroku/heroku-buildpack-multi
$ heroku config:add LD_LIBRARY_PATH=/app/.linuxbrew/lib
$ heroku config:set MECAB_PATH=/app/.linuxbrew/lib/libmecab.so
$ git add .
$ git commit -m "first"
$ git push heroku master
参照
herokuでpython+django+scikit-learn+mecab(1)
https://qiita.com/kenchin110100/items/6f1c84ac8858525fffc5
#問題
Linuxbrewでmecabのインストールはできるが、pipが動かない。
pipでパッケージのインストールはできるが、Linuxbrewが動かない。
#解決
$ heroku create --buildpack https://github.com/heroku/heroku-buildpack-multi
ではうまく動かない。
複数のbuildpackをセットする必要があった。
$ git init
$ heroku create flask-mecab-heroku2
$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-multi.git
$ heroku buildpacks:add --index 2 heroku/python
$ heroku config:add LD_LIBRARY_PATH=/app/.linuxbrew/lib
$ heroku config:set MECAB_PATH=/app/.linuxbrew/lib/libmecab.so
$ git add .
$ git commit -m "first"
$ git push heroku master
出力
https://flask-mecab-heroku2.herokuapp.com/
https://flask-mecab-heroku2.herokuapp.com/0
やれやれ。これで解析ページを作ることができる。
振り返ると単純なことなのだが、わからないときはわからないのだよねぇ。
また、これが最適解かというとそうでもないような・・・
本当はこのあたりのwebアプリを作ることができるとよいのだが、herokuのメモリは500MBほどしかないのね
https://qiita.com/kzuzuo/items/d41327433c9cdc6a5fd3
https://qiita.com/kzuzuo/items/8a80d8974bf3a7db7e54