[PYTHON] Die Platte, von der ich süchtig war, als ich MeCab in Heroku einsetzte

Zweck

Ich habe Pandas, Plotly und MeCab in die Flasche gegeben, eine einfache Webanwendung mit Heroku gestartet und versucht, eine einfache morphologische Analyse und Aggregation von überall aus zu ermöglichen.

Ich war süchtig nach Heroku, also vergiss nicht, es aufzunehmen.

Umgebung

Windows10 Python3.7 Anaconda

Was ich getan habe

Kolbenvorbereitung entfällt. Kein Problem vor Ort.

main.py-Testcode (XLSX-Eingabe, Plotly-Ausgabe, HTML-Ausgabeteil wird gelöscht.)


# -*- 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 für den berühmten Service von AWS(EC2)Und Amazon Simple Storage Service(S3)Es gibt.
Im Vergleich zu den physischen Serverfarmen, die bisher Clients gehören, hat AWS den Vorteil, dass es schnell Rechenleistung in großem Maßstab bereitstellen kann."""
    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

Referenz Python + Django + Scikit-Learn + Mecab (1) mit Heroku https://qiita.com/kenchin110100/items/6f1c84ac8858525fffc5

Problem

Ich kann Mecab mit Linuxbrew installieren, aber Pip funktioniert nicht. Ich kann Pakete mit pip installieren, aber Linuxbrew funktioniert nicht.

Lösung

$ heroku create --buildpack https://github.com/heroku/heroku-buildpack-multi Funktioniert nicht Ich musste mehrere Buildpacks setzen.

$ 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

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

Guter Kummer. Jetzt können Sie eine Analyseseite erstellen.

Rückblickend ist es eine einfache Sache, aber wenn Sie nicht verstehen, verstehen Sie nicht. Es scheint auch, dass dies nicht die optimale Lösung ist ...

Es wäre schön, hier eine Web-App erstellen zu können, aber Heroku hat nur etwa 500 MB Speicher. https://qiita.com/kzuzuo/items/d41327433c9cdc6a5fd3 https://qiita.com/kzuzuo/items/8a80d8974bf3a7db7e54

Recommended Posts

Die Platte, von der ich süchtig war, als ich MeCab in Heroku einsetzte
Ich war auf dotCloud süchtig nach Flask
Ein Hinweis, von dem ich süchtig war, als ich unter Linux einen Piepton machte
Wovon ich süchtig war, als ich Python Tornado benutzte
Ich erhalte [Fehler 2055], wenn ich versuche, mit Heroku eine Verbindung zu MySQL herzustellen
Wovon ich süchtig war, als der Processing-Benutzer zu Python wechselte
Ich war süchtig nach Multiprocessing + Psycopg2
Memo (März 2020), dem ich bei der Installation von Arch Linux auf dem MacBook Air 11'Early 2015 verfallen war
Eine Geschichte, nach der ich süchtig war, als ich in Go nil als Funktionsargument angab
Wovon ich süchtig war, als ich ALE in Vim für Python einführte
Ein Hinweis, dem ich beim Erstellen einer Tabelle mit SQL Alchemy verfallen war
Ich war süchtig danach, mysqlclient zu installieren
Was ich süchtig nach Python Autorun war
Zwei Dinge, die ich süchtig danach war, Django + Apache + Nginx unter Windows zu erstellen
Als ich versuchte, Python auszuführen, wurde ich zum Microsoft Store übersprungen
Ich war süchtig danach, Tensorflow auf einer GPU mit dem NVIDIA-Treiber 440 + CUDA 10.2 auszuführen
Eine Geschichte, die mich süchtig nach dem Versuch machte, LightFM unter Amazon Linux zu installieren
Ich war süchtig danach, Markdown nicht für die lange Beschreibung von Pypi verwenden zu können
Der Dateiname war in Python schlecht und ich war süchtig nach Import
[Einführung in json] Nein, ich war süchtig danach. .. .. ♬
Melden Sie sich an, wenn ich befürchtet habe, dass ich unter Linux keine Verbindung zu Wi-Fi herstellen kann
Bei der Konvertierung von CSV in JSON mit Python bin ich auf einen Zeichencode gestoßen
Ich habe versucht, Resultoon auf Mac + AVT-C875 zu verwenden, war aber unterwegs frustriert.
Drei Dinge, von denen ich süchtig war, als ich Python und MySQL mit Docker verwendete
AtCoder AGC 041 C - Ich war süchtig nach der vollständigen Suche nach Domino-Qualität
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Rekord süchtig nach Grundkarte
Beachten Sie, dass ich süchtig nach dem npm-Skript war, das in der Überprüfungsumgebung nicht übergeben wurde
Ich habe versucht, das Telefon klingeln zu lassen, als es auf dem IoT-Post veröffentlicht wurde
Als ich versuchte, eine Socket-Kommunikation mit Raspberry Pi durchzuführen, war das Protokoll anders
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Es war ein Leben, das ich auf AWS Lambda OCR wollte, um die Charaktere zu lokalisieren.
Wovon ich süchtig war, als ich Klassenvererbung und gemeinsame Tabellenvererbung in SQLAlchemy kombinierte
Wenn ich versuche, Pandas unter macOS zu importieren, wird die Fehlermeldung Kein Modul mit dem Namen'_bz2 'angezeigt.
Was ich getan habe, als ich wütend war, es mit der Option enable-shared einzufügen
Als ich die Django-App für Heroku bereitgestellt habe, wurde das Modul nicht gefunden: <Projektname> .wsgi.
Eine Geschichte, von der ich bei np.where süchtig war
Eine Geschichte, als ich IntelliJ unter Linux verwendete und kein Japanisch eingeben konnte
Ich war süchtig danach, logging.getLogger mit Flask 1.1.x zu versuchen
Als ich versuchte, PIL und matplotlib in einer virtuellen Umgebung zu installieren, war ich süchtig danach.
Wovon ich süchtig war, als ich mit riesigen Dateien in einer Linux 32-Bit-Umgebung umging
[IOS] GIF-Animation mit Pythonista3. Ich war süchtig danach.
Wenn ich versuche, mit Heroku zu pushen, funktioniert es nicht
So stellen Sie Pybot, das einfachste Python-Lehrbuch, auf Heroku bereit
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
Ich habe versucht, den Ipython-Cluster unter AWS auf das Minimum zu starten
(Hinweis) Punkte, auf die Sie bei der Installation von Scilab unter ArchLinux achten sollten
[Fix] Ich war süchtig nach dem alphanumerischen Urteil über Python-Strings
Wovon ich süchtig war, als ich mein eigenes neuronales Netzwerk mit den Gewichten und Vorurteilen aufbaute, die ich mit dem MLP-Klassifikator von scikit-learn bekam.
Die Geschichte, als ich von Caused by SSLError abhängig war ("Kann keine Verbindung zur HTTPS-URL herstellen, da das SSL-Modul nicht verfügbar ist.")
Ich habe einen Fehler bekommen, als ich versucht habe, Luigi parallel in Windows zu verarbeiten, aber die Lösung
Eine Geschichte über das Schreiben von AWS Lambda und ein wenig Abhängigkeit von den Standardwerten von Python-Argumenten
Beachten Sie, dass ich süchtig danach war, mit Pythons mysql.connector über eine Webanwendung auf die Datenbank zuzugreifen
Als ich Django in mein Home-Verzeichnis legte, wurde ich mit einem Berechtigungsfehler in eine statische Datei eingebunden