1 of 14

Organizando o requirements.txt de forma Pythonica

Sério, é da hora!

2 of 14

Guilherme Medeiros

  • @frenetic_br no Twitter
  • @frenetic no GitHub
  • @troll no PugPe

3 of 14

4 of 14

O problema

  • Tu usa o PIP marotão
    • pip install django
    • pip install psycopg
    • pip install django-rest-framework
    • pip install boto
    • pip install djangorestframework-jwt
    • pip install django-cors-headers
    • pip install pillow
  • E ai tu dá um freeze > requirements.txt pra commitar

5 of 14

$ cat requirements.txt

cffi==1.5.2

cryptography==1.2.2

enum34==1.1.2

Flask==0.10.1

gunicorn==19.4.5

idna==2.0

ipaddress==1.0.16

itsdangerous==0.24

Jinja2==2.8

MarkupSafe==0.23

ndg-httpsclient==0.4.0

pyasn1==0.1.9

pycparser==2.14

pyOpenSSL==0.15.1

requests==2.9.1

six==1.10.0

Werkzeug==0.11.4

​

6 of 14

7 of 14

Ai eu te pergunto:

  • Como que dá manutenção nessa joça????
  • Como que tu faz para atualizar uma dependência e ai atualizar a dependência da dependência que depende de algo que tu nem sabia que era dependencia???
      • usa npm? ROTFLOLICOPTER

8 of 14

Solução Pythonica

  • requirements-to-freeze.txt
  • requirements.txt

9 of 14

Como que usa?

  1. Tenha uma ideia de projeto ou cliente pagante
  2. Crie um arquivo na pasta do seu projeto chamado requirements-to-freeze.txt
  3. Coloque nesse arquivo as suas dependências direta
    1. Pode ser com versão
      1. Tipo django==1.8.11
      2. Tipo Pillow
  4. Pip install -r requirements-to-freeze.txt

10 of 14

E depois?

  1. Você precisa commitar ou por em produção?
  2. pip freeze > requirements.txt
  3. PRESTO!

11 of 14

O que aconteceu?

  • Você tem um arquivo com suas bibliotecas diretas, fácil de manter
  • Você tem um arquivo com dependências de produção/publicação, para que todos os desenvolvedores estejam na "same page"

12 of 14

QUE IDEIA GENIAL!!!

  • Também acho
  • Façam também!

13 of 14

14 of 14

ACABOU. TCHAU! o/