LoginSignup
2
2

More than 3 years have passed since last update.

HerokuにMeCabを入れる際ハマっていた記録

Last updated at Posted at 2020-04-25

目的

flaskにpandas、plotly、MeCabを入れHerokuで簡単なwebアプリケーションを立ち上げ、簡単な形態素解析と集計をどこからでもできるようにしようとした。

Herokuのデプロイでハマったので、忘れないように記録。

環境

Windows10
Python3.7
Anaconda

やったこと

flask準備省略。
ローカルでは問題なし。

main.py テスト用コード(xlsx入力、plotly出力、html出力部分は省略)
# -*- 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()
requirements.txt
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
Procfile
web: gunicorn main:app
.buildpacks
https://github.com/sunny4381/heroku-buildpack-linuxbrew.git
.cellar
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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2