[PYTHON] Re: La vie Heroku commence avec Flask from zero - Environnement et Hello world -

introduction

Au hackason de l'activité du club, j'ai créé une API simple en mettant Python Flask sur Heroku pour la première fois, alors j'aimerais l'écrire.

(Ajouté le 28/10/2016) Le code de l'API qui exécute PhantomJS avec Selenium et gratte avec Beautifulsoup et son explication sont dans la deuxième partie. Re: La vie Heroku à partir de zéro avec Flask ~ Selenium & PhantomJS & Beautifulsoup ~ À C'est la deuxième partie jusqu'à ce que vous déployez le programme sur Heroku Re: Life in Heroku à partir de zéro avec Flask ~ PhantomJS à Heroku ~ Puisqu'il est écrit, jetez un œil.

Ce qui a été utilisé

Environnement Python

buts finaux

Mettez ce que vous avez fait avec Flask of Python sur Heroku et créez une API qui renvoie json lorsque vous l'obtenez À propos, Chrome mesure

L'objectif de cette fois

Créez un environnement Python et élevez Flask vers Heroku pour faire Hello World

Prochain but

Gratter une page Web avec Python, la traiter au format json et la cracher, la pousser vers Heroku, De Heroku à l'endroit où vous obtenez json

Préparation

Environnement Python

Tout d'abord, en regardant l'article de la personne qui résume de manière facile à comprendre sur Qiita etc. Mettez ** pyenv ** et ** pyenv-virtualenv ** dans homebrew etc.! référence:

Ici, au lieu de pyenv-virtualenv, essayez de mettre un virtualenv normal, Si vous le mettez, cela peut être gênant, alors assurez-vous de mettre dans le virtualenv du plug-in pyenv lorsque vous le mettez. Référence: http://qiita.com/who_you_me/items/09f572c842b1c3fea015

Après avoir installé pyenv et pyenv-virtualenv, déplacez-vous vers le dossier que vous prévoyez de télécharger sur Heroku et préparez l'environnement.

$ mkdir hello-flask
#Créer un dossier de projet

$ cd hello-flask
#Déplacer vers un dossier


$ pyenv virtualenv 3.5.1 v3.5.1-flask 
# v3.5.1-Créer un environnement nommé flask

$ pyenv versions
# v3.5.1-Confirmez que le ballon est ajouté


$ pyenv shell v3.5.1-flask
#Appliquez cet environnement sous le dossier de travail

$ pyenv rehash
#Rehash juste au cas où

$ pyenv versions
# v3.5.1-Confirmez qu'il est déplacé vers le flacon

En faisant cela, même si vous placez différents packages dans ce dossier, les autres environnements ne seront pas pollués. Si vous appliquez Flask à d'autres dossiers, vous pouvez utiliser le même environnement! Yay!

Jusqu'à Hello World avec Flask

Flask Inclure le framework Python utilisé cette fois

$ pip install flask

Gunicorn Inclure également le serveur Web utilisé cette fois

$ pip install gunicorn

Créer des fichiers Flask

$ touch hello.py Procfile
#Créer un fichier pour écrire le fichier et les paramètres du flacon

hello.py


# -*- coding: utf-8 -*-
#Absolument nécessaire lors de l'utilisation du japonais

#Importez les bibliothèques requises telles que flask
import os
from flask import Flask

#Instanciez votre nom en tant qu'application
app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World!'
    
#Déterminez si vous frappez avec bash ou insérez avec l'importation
if __name__ == '__main__':
    app.run()

Procfile

web: gunicorn hello:app --log-file=-

Si vous vous préparez jusqu'à présent, le reste fonctionnera si vous le démarrez avec Python! Pratique!

$ python hello.py
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Ce sera comme ça, alors soyez égoïste comme on vous le dit Si vous accédez à http://127.0.0.1:5000/ ... hello.png

Vous pouvez quitter en appuyant sur Ctrl et C en même temps qu'écrit.

Départ pour Heroku

Inscrivez-vous avec Heroku

https://www.heroku.com/ Créez un compte à partir de l'inscription. Il semble que l'e-mail de confirmation d'achèvement sera retourné dans les 15 minutes, alors attendez tranquillement

Si vous pouvez en enregistrer un nouveau et voir le tableau de bord, vous êtes prêt à partir.

En fait, élever à Heroku

Je vais enfin donner ce que j'ai fait à Heroku!

Créez un fichier qui exporte la bibliothèque que vous utilisez

$ pip freeze > requirements.txt

Heroku examine ce fichier et prépare les bibliothèques, etc. Si vous téléchargez ce fichier sur Heroku sans le mettre à jour, vous obtiendrez une erreur.

Heroku et git

Appliquer git et commit

$ git init
#Définissez git dans le dossier

$ git add .
#Tout ajouter


$ git commit -m "helloworld"
#Faites le nom de commit helloworld et commettez

Je vais le donner à Heroku d'ici

$ heroku login
#Connectez-vous à heroku Entrez l'adresse e-mail enregistrée et passez

$ heroku create hello-flask
#Créer un nouveau projet pour heroku

Si vous créez heroku sur le Web au lieu de heroku, il configurera même un référentiel distant pour git. Cependant, le nom de projet de cet heroku, y compris les autres utilisateurs, ** ne peut pas utiliser le même nom dans heroku **, donc si vous ne pouvez pas le créer, vous pouvez ajouter un numéro après lui. Si vous n'écrivez rien après la création de heroku, heroku lui donnera automatiquement un nom approprié.

$ git push heroku master
#Poussez vers le référentiel distant d'heroku en le rendant maître d'heroku
#Avec cette seule commande, vous pouvez mettre la bibliothèque sur heroku et faire diverses choses.

$ heroku open
#Cette commande l'ouvrira dans votre navigateur sans copier l'URL

Si l'URL heroku s'ouvre avec heroku ouvert, vous pouvez voir Hello World.

À ce stade, si vous pouvez rendre le texte de contenu renvoyé json, il devrait s'agir d'une API dite json! Yay!

Si vous obtenez une erreur

Si vous obtenez une erreur lorsque vous voyez ce que vous avez téléchargé sur heroku, $ heroku logs Jetons un coup d'oeil à Lorsque vous regardez les journaux, vous ne voudrez peut-être pas le voir car il y a beaucoup de lignes, mais recherchez le nom de fichier que vous avez créé à partir de celui-ci

File "/app/hello.py", line 10

Si vous écrivez quelque chose comme, vous savez que cette partie ou la partie qui y est liée est erronée.

Feuille de contrôle des erreurs

Si vous utilisez le japonais dans un fichier python

En haut du fichier

# -*- coding: utf-8 -*-

Avez-vous oublié d'écrire? Obligatoire si vous utilisez le japonais même dans le commentaire. Si vous utilisez le japonais dans un endroit qui n'est pas commenté, vous devrez peut-être ajouter u au début

hello.py


#Lors de la sortie en japonais
def index():
    return u'Bonjour le monde! !!'

Si cela échoue en poussant vers heroku

$ pip freeze > requirements.txt

Avez-vous oublié de créer requirements.txt? De plus, si vous pouvez pousser mais obtenir une erreur, après avoir exécuté cette commande une fois, Vérifiez si vous utilisez la bibliothèque nouvellement ajoutée dans le fichier

référence

Épilogue

Si vous avez des améliorations ou des erreurs, veuillez nous en informer dans les commentaires.

Twitter:@ymgn_ll

Recommended Posts

Re: La vie Heroku commence avec Flask from zero - Environnement et Hello world -
Re: La vie d'Heroku à partir de zéro avec Flask ~ PhantomJS à Heroku ~
Re: La vie Heroku à partir de zéro avec Flask ~ Selenium & PhantomJS & Beautifulsoup ~
Bonjour le monde sur flacon
Bonjour le monde avec Flask + Hamlish
Hello World et détection de visage avec opencv-python 4.2
Tutoriel Flask (de l'installation à Hello World)
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
Hello World et détection de visage avec OpenCV 4.3 + Python
Hello World avec gRPC / go dans l'environnement Docker
Premier python ① Construction de l'environnement avec pythonbrew & Hello World !!
bonjour le monde avec ctypes
Bonjour le monde avec Docker
[Tweepy] Re: Développement de Twitter Bot à partir de zéro # 1 [python]
De la configuration de l'environnement Rust à l'exécution de Hello World
Re: Durée de vie de la programmation compétitive à partir de zéro Chapitre 1.3 "Side tea"
Jusqu'à Hello World avec Flask + uWSGI + Nginx @ Sakura's VPS (CentOS 6.6)
Les débutants en python / tensorflow créent l'environnement jupyter + tensorflow et font Hello World
Touch Flask + courir avec Heroku
Dessinez bonjour le monde avec mod_wsgi
Jusqu'à bonjour le monde avec zappa
Python commençant par Hello world!
De la création d'un environnement Python pour les personnes inexpérimentées à Hello world
Re: Vie de programmation compétitive à partir de zéro Chapitre 1.2 "Python of tears"