Do zero ao deploy com Python e Bottle

Eric Hideki

Python

  • Criada em 1989 por Guido Van Hossum
  • Contém uma sintaxe concisa e clara
  • Excelente biblioteca padrão
  • Fácil de aprender e instalar
  • Uma comunidade enorme ao redor do mundo

Como instalar?

  • No Ubuntu e no Mac OSX já vem instalados!
  • Instalar no Windows, baixe o .exe e next³

Zen do Python

Tim Peters

>> import this

Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Linear é melhor do que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o bastante para quebrar as regras.
Ainda que praticidade vença a pureza.
Erros nunca devem passar silenciosamente.
A menos que sejam explicitamente silenciados.
Diante da ambigüidade, recuse a tentação de adivinhar.
Deveria haver um — e preferencialmente só um — modo óbvio para fazer algo.
Embora esse modo possa não ser óbvio a princípio a menos que você seja holandês.
Agora é melhor que nunca.
Embora nunca freqüentemente seja melhor que *já*.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa idéia.
Namespaces são uma grande idéia — vamos ter mais dessas!

O famoso Hello World

print ('Hello World')

from random import randint
print ('Bem vindo!')
sorteado = randint(1, 100)
chute = 0
while chute != sorteado:
    chute = int(input ('Chute: '))
    if chute == sorteado:
        print ('Você venceu!')
    else:
        if chute > sorteado:
            print ('Alto')
        else:
            print ('Baixo')
print ('Fim do jogo!')
import random

nomes = '''Júlia Sophia Isabella Manuela Giovanna Alice Laura
        Luiza Beatriz Mariana Yasmin Gabriela Rafaela Isabelle Lara
        Letícia Valentina Nicole Sarah Vitória Isadora Lívia Helena
        Lorena Clara Larissa Emanuelly Heloisa Marina Melissa Gabrielly
        Eduarda Rebeca Amanda Alícia Bianca Lavínia Fernanda Ester
        Carolina Emily Cecília Pietra Milena Marcela Laís Natália
        Maria Bruna Camila Luana Catarina Olivia Agatha Mirella
        Sophie Stella Stefany Isabel Kamilly Elisa Luna Eloá Joana
        Mariane Bárbara Juliana Rayssa Alana Caroline Brenda Evelyn
        Débora Raquel Maitê Ana Nina Hadassa Antonella Jennifer
        Betina Mariah Sabrina'''.split()

nomes.sort()
print (' '.join(nomes))
sorteado = random.choice(nomes)
chute = ''
while chute != sorteado:
        chute = input('Chute: ')
        if chute == sorteado:
                print ('Parabéns!')
        elif chute > sorteado:
                print ('Alto')
        else:
                print ('Baixo')

http://mindbending.org/pt/hack-n-cast-v06-python

Bottle

Por que Bottle?

  • Leve
  • Simples
  • Único arquivo
  • Excelente documentação
  • Poderoso
from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

Como instalar?

$ wget http://bottlepy.org/bottle.py
$ sudo pip install bottle     
$ sudo easy_install bottle             
$ sudo apt-get install python-bottle   

O que é o pip?

Pip

Gerenciador de programas/pacotes Python

https://pypi.python.org/pypi/pip/

https://pypi.python.org/pypi?%3Aaction=index

Bottle-boilerplate

https://github.com/avelino/bottle-boilerplate

(virtualenvwrapper) -> mkvirtualenv cpbr8
(cpbr8) -> cd cpbr8
(cpbr8) -> bottle startproject cpbr8
(cpbr8) -> pip install bottle-boilerplate
(cpbr8) -> cd cpbr8
(cpbr8) -> pip install -r requirements.txt
(cpbr8) -> bottle doc

Mas o que ele faz?

Bottle-boilerplate


Cria um template(cria um padrão) de um projeto bottle(MVC).

Git

.gitignore

O que é?

Vamos rodar?

python manage.py runserver

E como faço deploy no Heroku?

Heroku Toolbelt

Ferramenta linha de comando para trabalhar com o Heroku

 

https://toolbelt.heroku.com/

Procfile

Profile: web: python manage.py runserver

Heroku login

-> heroku create cpbr8

git push heroku master

https://cpbr8.herokuapp.com/

E a Pythonanywhere?

https://www.pythonanywhere.com/

Mas espera, não subiu o bottle-boilerplate?

Homework

Tip

http://blog.pythonanywhere.com/87/

https://github.com/avelino/mining

Obrigado!

@erichideki

Made with Slides.com