[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (partie 2)

Qu'est-ce que c'est?

Ceci est une continuation

[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1) http://qiita.com/it_ks/items/afd1bdb792d41d0e1145

Jusque là Je l'ai déployé sur heroku et l'ai exécuté comme échantillon <Imakoko

heroku update J'ai oublié. C'est un classique, non? heroku update

>heroku update
Updating plugins... done. Updated 1 package.
heroku-cli: Updating... done.

À ce moment, il semble que heroku-cli a été mis à jour, et il a été mis à jour.

virtualenv

faire

virtualenv venv-name Il crée les paramètres d'environnement immédiats à changer et à utiliser. Venv-name est le nom de l'environnement. Donnez-lui un nom de votre choix et exécutez-le. Ici, nous allons le créer en orthodoxe avec le nom "venv".

>virtualenv venv
New python executable in venv\Scripts\python.exe
Installing setuptools, pip, wheel...done.

Alors maintenant C: \ Users \ (Omitted) \ python-getting-started J'y suis, mais un dossier appelé venv est créé directement en dessous. Il y a divers Pythons (environ 40 Mo) dedans, Il s'agit d'un ensemble d'environnements qui peuvent être pollués.

Autoriser.

Il existe un activate.bat, alors utilisez-le. Ensuite, le nom de l'environnement sera ajouté à l'invite (au début de l'attente de l'entrée en ligne de commande).

python


>venv\Scripts\activate.bat
(venv) C:\Users\(Omis)\python-getting-started>

Par la suite, il sera abrégé en (venv)>

Push local changes Imakoko

https://devcenter.heroku.com/articles/getting-started-with-python#push-local-changes

Installer à partir du fichier d'exigences

python


(venv) >pip install -r requirements.txt
Collecting dj-database-url==0.3.0 (from -r requirements.txt (line 1))
  Downloading dj_database_url-0.3.0-py2.py3-none-any.whl
Collecting Django==1.9.1 (from -r requirements.txt (line 2))
  Downloading Django-1.9.1-py2.py3-none-any.whl (6.6MB)
    100% |################################| 6.6MB 75kB/s
Collecting gunicorn==19.4.5 (from -r requirements.txt (line 3))
  Downloading gunicorn-19.4.5-py2.py3-none-any.whl (112kB)
    100% |################################| 114kB 1.7MB/s
Collecting psycopg2==2.6.1 (from -r requirements.txt (line 4))
  Downloading psycopg2-2.6.1-cp27-none-win32.whl (814kB)
    100% |################################| 815kB 487kB/s
Collecting whitenoise==2.0.6 (from -r requirements.txt (line 5))
  Downloading whitenoise-2.0.6-py2.py3-none-any.whl
Installing collected packages: dj-database-url, Django, gunicorn, psycopg2, whitenoise
Successfully installed Django-1.9.1 dj-database-url-0.3.0 gunicorn-19.4.5 psycopg2-2.6.1 whitenoise-2.0.6

(venv) >

Modifier les exigences.txt

requests==2.9.1 Veuillez ajouter à requirements.txt, alors ajoutez-le Après cela, pip install -r requirements.txt

python


(venv) >pip install -r requirements.txt
Requirement already satisfied (use --upgrade to upgrade): dj-database-url==0.3.0 in c:\users\cat_high\documents\guncys\herokustudy\proj\testapp\python-getting-started\sgenv\lib\site-packages (from -r requirements.txt (line 1))
Requirement already satisfied (use --upgrade to upgrade): Django==1.9.1 in c:\users\cat_high\documents\guncys\herokustudy\proj\testapp\python-getting-started\sgenv\lib\site-packages (from -r requirements.txt (line 2))
Requirement already satisfied (use --upgrade to upgrade): gunicorn==19.4.5 in c:\users\cat_high\documents\guncys\herokustudy\proj\testapp\python-getting-started\sgenv\lib\site-packages (from -r requirements.txt (line 3))
Requirement already satisfied (use --upgrade to upgrade): psycopg2==2.6.1 in c:\users\cat_high\documents\guncys\herokustudy\proj\testapp\python-getting-started\sgenv\lib\site-packages (from -r requirements.txt (line 4))
Requirement already satisfied (use --upgrade to upgrade): whitenoise==2.0.6 in c:\users\cat_high\documents\guncys\herokustudy\proj\testapp\python-getting-started\sgenv\lib\site-packages (from -r requirements.txt (line 5))
Collecting requests==2.9.1 (from -r requirements.txt (line 6))
  Downloading requests-2.9.1-py2.py3-none-any.whl (501kB)
    100% |################################| 503kB 518kB/s
Installing collected packages: requests
Successfully installed requests-2.9.1

(venv) >

Modifier hello / views.py

Suivez les instructions et ajoutez ce qui suit au début de views.py import requests

De plus, modifiez la fonction d'index

python


# Create your views here.
def index(request):
    # return HttpResponse('Hello from Python!')
    return render(request, 'index.html')

python


def index(request):
    r = requests.get('http://httpbin.org/status/418')
    print r.text
    return HttpResponse('<pre>' + r.text + '</pre>')

Tester localement

Après avoir réécrit la fonction d'index, testez

(venv) >pip install -r requirements.txt
(venv) >heroku local
forego | starting web.1 on port 5000
web.1  | Traceback (most recent call last):

(venv) >

Vous pouvez vérifier l'environnement local en accédant à http: // localhost: 5000.

Supplément

J'ai remarqué après cela, mais c'est peut-être le cas dans l'environnement Windows. heroku local web -f Procfile.windows Celui écrit en bas d'ici est ↓ https://devcenter.heroku.com/articles/getting-started-with-python#declare-app-dependencies

Reflété dans le fichier sur heroku

Toujours là

https://devcenter.heroku.com/articles/getting-started-with-python#push-local-changes

git add

git add .

(Puis warning: LF will be replaced by CRLF in〜〜 The file will have its original line endings in your working directory. J'ai beaucoup de journaux sur le code de saut de ligne. réduction)

git commit

(venv) >git commit -m "Demo"

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got '{user}@{machine}.(none)')

(venv) >

Hmm Excusez-moi.

(venv) >git config --global user.email "[email protected]"
(venv) >git config --global user.name "heroku user name"

Et engagez-vous à nouveau.

Confirmer avec git push

Il dit git push heroku master, alors suivez-le tranquillement

Le téléchargement prend un certain temps. Environ 2 minutes?

python


(venv) >git push heroku master
Counting objects: 5952, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4984/4984), done.
Writing objects: 100% (5952/5952), 7.32 MiB | 87.00 KiB/s, done.
Total 5952 (delta 1807), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Using set buildpack heroku/python
remote: -----> Python app detected
remote: -----> Installing dependencies with pip
remote:        Collecting requests==2.9.1 (from -r requirements.txt (line 6))
remote:        Downloading requests-2.9.1-py2.py3-none-any.whl (501kB)
remote:        Installing collected packages: requests
remote:        Successfully installed requests-2.9.1
remote:
remote: -----> Preparing static assets
remote:        Running collectstatic...
remote:        Post-processed 'admin/js/vendor/xregexp/LICENSE-XREGEXP.txt' as 'admin/js/vendor/xregexp/LICENSE-XREGEXP.d64cecf4f157.txt'
(Omis)
remote:        Post-processed 'humans.txt' as 'humans.d41d8cd98f00.txt'
remote:        Post-processed 'lang-logo.png' as 'lang-logo.019c8743b7cf.png'
remote:        58 static files copied to '/app/staticfiles', 58 post-processed.
remote:
remote:
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing... done, 50.3MB
remote: -----> Launching...
remote:        Released v6
remote:        https://ancient-taiga-0000.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy.... done.
To https://git.heroku.com/ancient-taiga-0000.git
   fe7f948..8bba81f  master -> master

(venv) >

Vérifiez (l'heroku non local) avec (venv)> heroku open.

console

Imakoko

https://devcenter.heroku.com/articles/getting-started-with-python#start-a-console

Python Essayez heroku run python manage.py shell

python


(venv) >heroku run python manage.py shell
Running python manage.py shell on ancient-taiga-0000... up, run.8091
Python 2.7.11 (default, Dec  7 2015, 21:16:24)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
>>> dir()
['__builtins__']

Vous pouvez parler. La réponse lors de la frappe est lente, probablement à cause de la communication.

Lors de la fermeture

>>> exit()

bash heroku run bash

python


(venv) >heroku run bash
Running bash on ancient-taiga-0000... up, run.5888
~ $ ls
app.json        hello      Procfile          README.md         runtime.txt
gettingstarted  manage.py  Procfile.windows  requirements.txt  staticfiles
~ $ exit
exit

(venv) >

Modifier le contenu affiché

C'est la production. La fonction d'index que j'ai modifiée plus tôt,

python


    return HttpResponse('<pre>' + r.text + '</pre>')

Cette partie sera le contenu qui sera affiché lorsque vous accéderez à l'index. Il vous suffit de donner une ** chaîne à HttpResponse () **.

Par exemple

python


def index(request):
    return HttpResponse( str(dir()) )

Comme.

add、commit、push Après avoir édité .py, ajoutez → commit → push

(venv) >git add .

(venv) >git commit -m "DemoDemo"
[master 986e6d1] DemoDemo
 1 file changed, 4 insertions(+)

(venv) >git push heroku master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 365 bytes | 0 bytes/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Using set buildpack heroku/python
remote: -----> Python app detected
remote: -----> Installing dependencies with pip
remote:
remote: -----> Preparing static assets
remote:        Running collectstatic...
remote:        Post-processed 'admin/js/vendor/jquery/jquery.js' as 'admin/js/vendor/jquery/jquery.107fbe9555bf.js'
(Omis)
remote:        Post-processed 'humans.txt' as 'humans.d41d8cd98f00.txt'
remote:        Post-processed 'lang-logo.png' as 'lang-logo.019c8743b7cf.png'
remote:        58 static files copied to '/app/staticfiles', 58 post-processed.
remote:
remote:
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing... done, 50.3MB
remote: -----> Launching...
remote:        Released v8
remote:        https://ancient-taiga-0000.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/ancient-taiga-0000.git
   8bba81f..986e6d1  master -> master

(venv) >

(Oh, le commentaire de commit ressemble à une merde, mais bien sûr, vous devriez ajouter un meilleur poème)

résultat: heroku_dir.png

Ajouter autre que l'index

La fonction ** index ** est appelée lorsque vous accédez à https: // Ancient-taiga-0000.herokuapp.com /, Ensuite, par exemple, pour le rendre accessible comme https: // abréviation / test.

Ajout de fonction

Ajoutez une fonction return HttpResponse () similaire à index. Ici, nous avons préparé une fonction "test".

python


def test(request):
    return HttpResponse( '<strong>test view !!</strong>' )

Modifier urls.py

Il semble que vous deviez modifier ** urls.py ** directement dans le dossier de démarrage avec view.py. Ceci sur github,

https://github.com/heroku/python-getting-started/blob/master/gettingstarted/urls.py

python


urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'gettingstarted.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^$', hello.views.index, name='index'),
    url(r'^db', hello.views.db, name='db'),
    url(r'^admin/', include(admin.site.urls)),
)

(▲) Parce qu'il y a une telle partie

python


    url(r'^test', hello.views.test, name='test'),

Je l'ai ajouté comme ça.

avec ça heroku_testview.png

Vous avez atteint l'objectif d'afficher quelque chose, merci.

Résumé

«C'était long de haut en bas, mais je n'ai pas fait grand-chose. La seconde moitié est principalement en dessous

Il semble que vous deviez préparer une chaîne de caractères HTML comme si vous utilisiez la balise forte dans la vue de test finale. Avant cela, notez le processus de communication avec les services externes, Il semble que vous puissiez le formater et le transmettre à la fonction HttpResponse.

Je veux donc jouer avec les ** API externes **.

référence

Préparation et déploiement d'Heroku dans le niveau gratuit (Mac 10 + Rails 4.2 + MySQL 5.6) http://ruby-rails.hatenadiary.com/entry/20150314/1426332751

Recommended Posts

[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1)
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (partie 2)
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
Introduction à Python Hands On Partie 1
Mettre à jour Mac Python de 2 à 3
Déployer l'application Django sur Heroku [Partie 2]
Déployer l'application Django sur Heroku [Partie 1]
J'ai fait quelque chose avec python qui NOW LOADING se déplace de gauche à droite sur le terminal
Connexion de python à MySQL sur CentOS 6.4
Faites quelque chose régulièrement de Heroku à Shotgun
Introduction à Python avec Atom (en route)
[IBM Cloud] J'ai essayé d'accéder à la table Db2 on Cloud à partir de Cloud Funtions (python)
[Python] Comment supprimer les valeurs en double de la liste
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Tutoriel "Cython" pour rendre Python explosif: Passez l'objet de classe C ++ à l'objet de classe côté Python. Partie 2
Réfléchissez à la programmation de Python sur votre iPad
De l'état initial de CentOS8 à l'exécution de php python perl ruby avec nginx
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Étapes pour installer le dernier Python sur votre Mac
Comment télécharger avec Heroku, Flask, Python, Git (Partie 3)
Préférences pour générer des GIF animés à partir de Python sur Mac
J'ai essayé python pour la première fois avec heroku
Je voulais utiliser la bibliothèque Python de MATLAB
Trouvez la partie 575 de Wikipedia en Python
J'ai essayé d'envoyer des courriels depuis sendgrid régulièrement avec heroku, avec python
Comment télécharger avec Heroku, Flask, Python, Git (Partie 1)
La première étape pour obtenir Blender disponible à partir de Python
Comment passer des arguments lors de l'appel d'un script python depuis Blender sur la ligne de commande
Comment télécharger avec Heroku, Flask, Python, Git (Partie 2)
Comment profiter de Python sur Android !! Programmation en déplacement !!
Tutoriel "Cython" pour rendre Python explosif: Passez un objet de classe C ++ à un objet de classe côté Python. Partie ①
Comment connaître le nombre de GPU de python ~ Remarques sur l'utilisation du multitraitement avec pytorch ~
Comment exécuter Python sous Windows sans polluer autant que possible l'environnement (édition Scoop)
Contrôlez la lumière intelligente «Yeelight» de Python sans utiliser le cloud
[Partie 4] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 1] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python
Ne perdez pas contre Ruby! Comment exécuter Python (Django) sur Heroku
[Partie 2] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Enregistrer des images sur le Web sur un lecteur avec Python (Colab)
Programme pour juger si c'est une année calme du calendrier occidental [Python]
Aller au langage pour voir et se souvenir de la partie 8 Appeler le langage GO à partir de Python
Transmettez les données OpenCV de la bibliothèque C ++ d'origine à Python
Extraire la valeur la plus proche d'une valeur à partir d'un élément de liste en Python
Publier de Python vers Slack
Flirter de PHP à Python
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Mettez à jour le python que vous aviez sur votre Mac à 3.7-> 3.8
Passer de python2.7 à python3.6 (centos7)
Connectez-vous à sqlite depuis python
Comment créer facilement un environnement où le code Python peut s'exécuter sur Jupyter sans polluer l'environnement local
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
L'histoire selon laquelle la version de python 3.7.7 n'était pas adaptée à Heroku
Le record auquel j'étais accro en mettant MeCab dans Heroku
Comment reconstruire l'environnement python à partir de pyenv dans un environnement Mac (El Capitan)
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Précautions lors de l'exécution de Python sur EC2 à partir d'AWS Lambda (Exécuter la commande)