[PYTHON] Le record auquel j'étais accro en mettant MeCab dans Heroku

Objectif

J'ai mis des pandas, de l'intrigue et MeCab dans le flacon, lancé une application Web simple avec Heroku et essayé de permettre une analyse morphologique simple et une agrégation de n'importe où.

J'étais accro au déploiement d'Heroku, alors n'oubliez pas de l'enregistrer.

environnement

Windows10 Python3.7 Anaconda

Ce que j'ai fait

préparation du ballon omise. Aucun problème localement.

main.code de test py (entrée xlsx, sortie tracée, la partie sortie html est supprimée.)


# -*- 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 = """Amazon Elastic Compute Cloud pour le célèbre service d'AWS(EC2)Et Amazon Simple Storage Service(S3)Il y a.
Par rapport aux fermes de serveurs physiques détenues jusqu'à présent par les clients, AWS a l'avantage de pouvoir fournir rapidement une puissance de calcul à grande échelle."""
    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

référence python + django + scikit-learn + mecab (1) avec heroku https://qiita.com/kenchin110100/items/6f1c84ac8858525fffc5

problème

Je peux installer mecab avec Linuxbrew, mais pip ne fonctionne pas. Je peux installer des packages avec pip, mais Linuxbrew ne fonctionne pas.

Solution

$ heroku create --buildpack https://github.com/heroku/heroku-buildpack-multi Ça ne marche pas. J'ai dû définir plusieurs buildpacks.

$ 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

production https://flask-mecab-heroku2.herokuapp.com/ https://flask-mecab-heroku2.herokuapp.com/0

Bon chagrin. Vous pouvez maintenant créer une page d'analyse.

Avec le recul, c'est une chose simple, mais quand on ne comprend pas, on ne comprend pas. De plus, il semble que ce ne soit pas la solution optimale ...

Ce serait bien de pouvoir créer une application Web ici, mais heroku ne dispose que d'environ 500 Mo de mémoire. https://qiita.com/kzuzuo/items/d41327433c9cdc6a5fd3 https://qiita.com/kzuzuo/items/8a80d8974bf3a7db7e54

Recommended Posts

Le record auquel j'étais accro en mettant MeCab dans Heroku
J'étais accro à Flask sur dotCloud
Une note à laquelle j'étais accro lors de l'émission d'un bip sous Linux
Ce à quoi j'étais accro lors de l'utilisation de Python tornado
J'obtiens [Erreur 2055] en essayant de me connecter à MySQL avec Heroku
Ce à quoi j'étais accro lorsque l'utilisateur de traitement est passé à Python
J'étais accro au multitraitement + psycopg2
Mémo (mars 2020) auquel j'étais accro lors de l'installation d'Arch Linux sur MacBook Air 11'Early 2015
Une histoire à laquelle j'étais accro en spécifiant nil comme argument de fonction dans Go
Ce à quoi j'étais accro en présentant ALE à Vim pour Python
Une note à laquelle j'étais accro lors de la création d'une table avec SQL Alchemy
J'étais accro à pip installer mysqlclient
Ce que j'étais accro à Python autorun
Deux choses dont j'étais accro à la construction de Django + Apache + Nginx sous Windows
Lorsque j'ai essayé d'exécuter Python, j'ai été ignoré dans le Microsoft Store
J'étais accro à l'exécution de tensorflow sur GPU avec le pilote NVIDIA 440 + CUDA 10.2
Une histoire à laquelle j'étais accro à essayer d'installer LightFM sur Amazon Linux
J'étais accro à ne pas pouvoir utiliser Markdown pour la description longue de pypi
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
[Introduction à json] Non, j'en étais accro. .. .. ♬
Connectez-vous lorsque je craignais de ne pas pouvoir me connecter au Wi-Fi sous Linux
Je suis tombé sur un code de caractère lors de la conversion de CSV en JSON avec Python
J'ai essayé d'utiliser Resultoon sur Mac + AVT-C875, mais j'étais frustré en chemin.
Trois choses auxquelles j'étais accro lors de l'utilisation de Python et MySQL avec Docker
AtCoder AGC 041 C - J'étais accro à la recherche complète de Domino Quality
Une note à laquelle j'étais accro lors de l'exécution de Python avec Visual Studio Code
Une histoire à laquelle j'étais accro après la communication SFTP avec python
Record accro au fond de carte
Notez que j'étais accro au script npm ne passant pas dans l'environnement de vérification
J'ai essayé de faire sonner le téléphone lorsqu'il a été publié sur le poste IoT
Quand j'ai essayé de faire une communication socket avec Raspberry Pi, le protocole était différent
J'ai essayé python pour la première fois avec heroku
J'étais accro au grattage avec Selenium (+ Python) en 2020
C'était une vie que je voulais faire de l'OCR sur AWS Lambda pour localiser les personnages.
Ce à quoi j'étais accro en combinant l'héritage de classe et l'héritage de table commune dans SQLAlchemy
Lorsque j'essaye d'importer des pandas sur macOS, j'obtiens l'erreur No module named'_bz2 '
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared
Lorsque j'ai déployé l'application Django sur Heroku, j'ai obtenu le module introuvable: <nom-projet> .wsgi.
Une histoire à laquelle j'étais accro chez np.where
Une histoire lorsque j'utilisais IntelliJ sous Linux et que je ne pouvais pas saisir le japonais
J'étais accro à essayer logging.getLogger avec Flask 1.1.x
Quand j'ai essayé d'installer PIL et matplotlib dans un environnement virtualenv, j'en étais accro.
Ce à quoi j'étais accro en traitant d'énormes fichiers dans un environnement Linux 32 bits
[IOS] Animation GIF avec Pythonista3. J'en étais accro.
Quand j'essaye de pousser avec heroku, ça ne marche pas
Comment déployer Pybot, le manuel Python le plus simple, sur Heroku
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé de lancer le cluster ipython au minimum sur AWS
(Note) Points auxquels il faut être accro lors de l'installation de Scilab sur ArchLinux
[Réparer] J'étais accro au jugement alphanumérique des chaînes Python
Ce à quoi j'étais accro lorsque j'ai construit mon propre réseau de neurones en utilisant les poids et les biais que j'ai obtenus avec le classificateur MLP de scikit-learn.
L'histoire quand j'étais accro à Caused by SSLError ("Impossible de se connecter à l'URL HTTPS car le module SSL n'est pas disponible.")
J'ai eu une erreur lorsque j'ai essayé de traiter luigi en parallèle dans Windows, mais la solution
Une histoire sur l'écriture d'AWS Lambda et de devenir un peu accro aux valeurs par défaut des arguments Python
Notez que j'étais accro à accéder à la base de données avec mysql.connector de Python en utilisant une application Web
Lorsque j'ai mis Django dans mon répertoire personnel, je suis devenu accro à un fichier statique avec une erreur d'autorisation