[Python + Heroku] Vom Zustand ohne Python zur Anzeige von etwas mit Heroku (Teil 2)

Was ist das?

Dies ist eine Fortsetzung

[Python + Heroku] Vom Zustand ohne Python zur Anzeige von etwas mit Heroku (Teil 1) http://qiita.com/it_ks/items/afd1bdb792d41d0e1145

Bisher Ich habe es auf Heroku bereitgestellt und als Beispiel <Imakoko ausgeführt

heroku update Ich habe vergessen. Es ist ein Klassiker, nicht wahr? heroku update

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

Zu diesem Zeitpunkt scheint Heroku-Cli aktualisiert worden zu sein, und es wurde aktualisiert.

virtualenv

zu machen

virtualenv venv-name Es werden die unmittelbaren Umgebungseinstellungen zum Wechseln und Verwenden erstellt. Venv-name ist der Umgebungsname. Geben Sie ihm einen Namen Ihrer Wahl und führen Sie ihn aus. Hier werden wir es orthodox mit dem Namen "venv" erstellen.

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

Dann jetzt C: \ Users \ (Ausgelassen) \ Python-Getting-Start Sie befinden sich in, aber ein Ordner namens venv wird direkt darunter erstellt. Es gibt verschiedene Pythons (ca. 40 MB), Dies ist eine Reihe von Umgebungen, die verschmutzt werden können.

Ermöglichen.

Es gibt eine enable.bat, also benutze sie. Anschließend wird der Umgebungsname zur Eingabeaufforderung hinzugefügt (zu Beginn des Wartens auf die Befehlszeileneingabe).

python


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

Im Folgenden wird es als "(venv)>" abgekürzt

Push local changes Imakoko

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

Installation aus der Anforderungsdatei

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) >

Bearbeiten Sie die Anforderungen.txt

requests==2.9.1 Bitte fügen Sie zur Datei "resources.txt" hinzu, also fügen Sie sie hinzu Danach pip install -r require.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) >

Bearbeiten Sie hallo / views.py

Befolgen Sie die Anweisungen und fügen Sie am Anfang von views.py Folgendes hinzu import requests

Ändern Sie außerdem die Indexfunktion

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>')

Vor Ort testen

Testen Sie nach dem Umschreiben der Indexfunktion

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

(venv) >

Sie können die lokale Umgebung überprüfen, indem Sie auf "http: // localhost: 5000" zugreifen.

Ergänzung

Ich habe es danach bemerkt, aber vielleicht ist dies in der Windows-Umgebung der Fall. heroku local web -f Procfile.windows Der unten geschriebene ist ↓ https://devcenter.heroku.com/articles/getting-started-with-python#declare-app-dependencies

Reflektiert in der Datei auf Heroku

Immer noch hier

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

git add

git add .

(Dann warning: LF will be replaced by CRLF in〜〜 The file will have its original line endings in your working directory. Ich habe viele Protokolle über den Zeilenvorschubcode erhalten. Kürzung)

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 Entschuldigung.

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

Und wieder verpflichten.

Bestätigen Sie mit git push

Es heißt "git push heroku master", also folge ihm leise

Das Hochladen dauert einige Zeit. Über 2 Minuten?

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'
(Weggelassen)
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) >

Überprüfen Sie (das nicht-lokale Heroku) mit "(venv)> Heroku offen".

Konsole

Imakoko

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

Python Versuchen Sie "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__']

Du kannst reden. Die Reaktion beim Tippen ist langsam, wahrscheinlich aufgrund der Kommunikation.

Beim Schließen

>>> 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) >

Bearbeiten Sie den angezeigten Inhalt

Dies ist die Produktion. Die Indexfunktion, die ich zuvor geändert habe,

python


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

Dieser Teil ist der Inhalt, der angezeigt wird, wenn Sie auf den Index zugreifen. Sie müssen nur HttpResponse () ** einen ** String geben.

Zum Beispiel

python


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

Mögen.

add、commit、push Fügen Sie nach dem Bearbeiten von .py → Festschreiben → Drücken hinzu

(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'
(Weggelassen)
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, der Commit-Kommentar sieht aus wie ein Mist, aber natürlich solltest du ein besseres Gedicht hinzufügen)

Ergebnis: heroku_dir.png

Fügen Sie andere als Index hinzu

Die Funktion ** index ** wird aufgerufen, wenn Sie auf https: //cient-taiga-0000.herokuapp.com / zugreifen. Dann zum Beispiel, um es zugänglich zu machen wie "https: // abbreviation / test".

Funktionszusatz

Fügen Sie eine dem Index ähnliche Funktion "return HttpResponse ()" hinzu. Hier haben wir eine "Test" -Funktion vorbereitet.

python


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

Bearbeiten Sie urls.py

Es scheint, dass Sie ** urls.py ** direkt unter dem Ordner "Erste Schritte" zusammen mit "view.py" bearbeiten sollten. Dies auf 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)),
)

(▲) Weil es so einen Teil gibt

python


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

Ich habe es so hinzugefügt.

mit diesem heroku_testview.png

Sie haben das Ziel erreicht, etwas anzuzeigen, danke.

Zusammenfassung

»Es war lange auf und ab, aber ich habe nicht viel getan. Die zweite Hälfte ist hauptsächlich unten

Da in der letzten Testansicht das starke Tag verwendet wird, sollten Sie eine HTML-Zeichenfolge vorbereiten und erhöhen. Schreiben Sie vorher den Prozess der Kommunikation mit externen Diensten auf. Es scheint, dass Sie es formatieren und an die HttpResponse-Funktion übergeben können.

Also möchte ich mit ** externen APIs ** herumspielen.

Referenz

Vorbereiten und Bereitstellen von Heroku innerhalb der kostenlosen Stufe (Mac 10 + Rails 4.2 + MySQL 5.6) http://ruby-rails.hatenadiary.com/entry/20150314/1426332751

Recommended Posts

[Python + Heroku] Vom Zustand ohne Python zur Anzeige von etwas mit Heroku (Teil 2)
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
Einführung in Python Hands On Teil 1
Aktualisieren Sie Mac Python von 2 auf 3
Stellen Sie die Django-App in Heroku bereit [Teil 2]
Stellen Sie die Django-App in Heroku bereit [Teil 1]
Ich habe etwas mit Python gemacht, das sich JETZT LADEN auf dem Terminal von links nach rechts bewegt
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Mach regelmäßig etwas von Heroku bis Shotgun
Einführung in Python mit Atom (unterwegs)
[IBM Cloud] Ich habe versucht, über Cloud Funtions (Python) auf die Tabelle Db2 on Cloud zuzugreifen.
[Python] So entfernen Sie doppelte Werte aus der Liste
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
"Cython" -Tutorial, um Python explosiv zu machen: Übergeben Sie das C ++ - Klassenobjekt an das Klassenobjekt auf der Python-Seite. Teil 2
Überlegen Sie, wie Sie Python auf Ihrem iPad programmieren können
Vom Anfangszustand von CentOS8 bis zum Ausführen von PHP Python Perl Ruby mit Nginx
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Schritte zum Installieren des neuesten Python auf Ihrem Mac
Hochladen mit Heroku, Flask, Python, Git (Teil 3)
Einstellungen zum Generieren animierter GIFs aus Python auf dem Mac
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Ich wollte die Python-Bibliothek von MATLAB verwenden
Suchen Sie den Teil 575 aus Wikipedia in Python
Ich habe versucht, regelmäßig E-Mails von sendgrid mit Heroku und Python zu senden
Hochladen mit Heroku, Flask, Python, Git (Teil 1)
Der erste Schritt, um Blender von Python verfügbar zu machen
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
Hochladen mit Heroku, Flask, Python, Git (Teil 2)
Wie man Python auf Android genießt !! Programmieren für unterwegs !!
"Cython" -Tutorial, um Python explosiv zu machen: Übergeben Sie ein C ++ - Klassenobjekt an ein Klassenobjekt auf der Python-Seite. Teil ①
Wie man die Anzahl der GPUs aus Python kennt ~ Hinweise zur Verwendung von Multiprocessing mit pytorch ~
So führen Sie Python unter Windows aus, ohne die Umgebung so stark wie möglich zu verschmutzen (Scoop Edition)
Steuern Sie Smart Light "Yeelight" von Python aus, ohne die Cloud zu verwenden
[Teil 4] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Teil 1] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Hyperledger Iroha] Hinweise zur Verwendung des Python SDK
Verliere nicht gegen Ruby! Wie man Python (Django) auf Heroku ausführt
[Teil 2] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Speichern Sie Bilder im Web mit Python (Colab) auf einem Laufwerk.
Programm zur Beurteilung, ob es nach dem westlichen Kalender ein ruhiges Jahr ist [Python]
Gehen Sie zur Sprache, um Teil 8 zu sehen und sich daran zu erinnern. Rufen Sie die GO-Sprache von Python aus auf
Übergeben Sie die OpenCV-Daten der ursprünglichen C ++ - Bibliothek an Python
Extrahieren Sie den Wert, der einem Wert am nächsten kommt, aus einem Listenelement in Python
Post von Python nach Slack
Flirte von PHP nach Python
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Aktualisieren Sie die Python, die Sie auf Ihrem Mac hatten, auf 3.7-> 3.8
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
So erstellen Sie einfach eine Umgebung, in der Python-Code auf Jupyter ausgeführt werden kann, ohne die lokale Umgebung zu verschmutzen
Über den Fehler, den ich beim Versuch, Adafruit_DHT von Python auf Raspberry Pi zu verwenden, festgestellt habe
Die Geschichte, dass die Version von Python 3.7.7 nicht an Heroku angepasst wurde
Die Platte, von der ich süchtig war, als ich MeCab in Heroku einsetzte
So erstellen Sie eine Python-Umgebung aus Pyenv in einer Mac-Umgebung (El Capitan)
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)