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
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.
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
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) >
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) >
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>')
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
.
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
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.
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
.
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) >
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:
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
.
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>' )
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
Vous avez atteint l'objectif d'afficher quelque chose, merci.
«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 **.
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