Montando um ambiente de desenvolvimento Python / Django no Mac OSX

Depois de muito não encontrar nada para postar aqui, e ter meus problemas todos sanados por artigos já escritos na internet. Encontrei algo útil quando fui instalar meu velho amigo framework Django com a biblioteca PIL assim como uma atualização da linguagem de programação Python, da versão 2.6.1 para versão 2.6.4.

Antes de mais nada o Ambiente:

Mac OS X 10.6.2 (Snow Leopard)
Python 2.6.4
IPython 0.10
PIL 1.1.7
Django 1.1.1

Vamos então aos procedimentos realizados:

Para chegar a este resultado, primeiramente instale o Mac Ports, você pode encontrar ele aqui e se
ainda tiver alguma dúvida para a instalção do mesmo, é só ir até a página do projeto

Já com o Mac Ports instalado, vamos instalar a Python 2.6.4, para tal basta chamar o comando de um terminal:

$ sudo port install py26-ipython

Obs: Porque eu pedi para instalar direto o IPython? Simples, eu acredito que a maioria das pessoas que programem em Python gostam de aproveitar dos recursos do IPython, sendo assim e, chamando o comando de instalação do mesmo pelo MacPorts, o MacPorts já resolve todas as dependências (dentre elas a linguagem de programacao
Python) e instala tudo perfeitamente.

Até aqui você já tem metade dos ítens do seu ambiente instalados, agora ficou faltando só falar para o Mac OSX qual versão da Python você deseja utilizar quando chamar o comando ” $ python ” do terminal. Sendo assim, para que o Mac OSX chame a versão que o Mac Ports terminou de instalar, você vai precisar baixar um software que lhe auxiliará nesta tarefa também através do Mac Ports:

$ sudo port install python_select

Já com o python_select instalado, chame o comando:

$ sudo python_select python26

Com isso, você acabou de dizer para o Mac OS X que quando você chamar o comando ” $ python” de um terminal, é para ele chamar a shell da versão mais nova, ou seja, da versão 2.6.4.

Ficou faltando só instalar o Django e a PIL correto? Vamos lá então.

Antes de mais nada, você vai notar que ao chamar o comando ” $ ipython ” de um terminal ele vai abrir a shell da Python 2.6.1, que veio com o sistema operacional. O comando correto é ipython-2.6. E o comando ” $ easy_install ” segue esta mesma lógica que vai precisar ser chamado pelo ” $ easy_install-2.6 ” então para instalar o Django chame do terminal:

$ sudo easy_install-2.6 django

E pronto, já temos o framework Django 1.1.1 instalado corretamente. Para melhorar o ambiente de desenvolvimento, também seria interessante adicionar o comando ” $ django-admin.py ” na sua pasta ~/bin/ para que você possa chamar o mesmo de qualquer local do sistema, para isso, chame os seguintes comandos:

$ cd ~/bin/
$ ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/bin/django-admin.py django-admin.py

Ainda falta a PIL, vamos lá então. Para instalar a PIL (Python Image Library). Você precisa ter instalada a biblioteca libjpeg no seu sistema operacional, caso não tenha ainda, instale através do Mac Ports:

$ sudo port install jpeg

Depois vá até o site da PIL e baixe o Source Kit da versão (no nosso caso 1.1.7) que pode ser encontrado aqui

Vá até a pasta onde você realizou o download do arquivo e abra o mesmo. Depois de um terminal vá até a pasta gerada e chame o comando:

$ sudo python setup.py install

Pronto, tudo funcionando perfeitamente e sem dor de cabeça.
Até a próxima.

Django Pagination – Paginação fácil no Django

Estava eu, rodando pela internet no site da comunidade oficial do django quando me deparei com dois novos screencasts nesse site, e como sou bem curioso fui olhar.

O primeiro nem me chamou muito a atenção, a não ser pelo nível de organização do cara que é bastante interessante, porém no segundo ele apresentou uma aplicação chamada django-pagination, que torna muito fácil fazer paginação utilizando o framework django.

A utilização da mesma se dá de maneira bem fácil e é sobre isso que vou discorrer neste artigo, de acordo com as alterações que o autor do artigo original citou no screencast.

01 – Instalando a django-pagination para ser usada em todos os projetos;

Como feito no primeiro screencast (que citei o site acima) eu instalei a django-pagination junto com o meu django e em seguida linkei para o site-packages para poder ser usada em qualquer projeto, vamos então aos passos:

a) Baixe o source do google-source pelo SVN:

# cd /var/www/apps/python/
svn checkout http://django-pagination.googlecode.com/svn/trunk/ django-pagination

Logo após terminar, registre no site-packages do seu sistema, como eu uso o Archlinux, e sendo ele um *nix que suporta bash… resolvi usar o script pylink citado pelo autor para fazê-lo de maneira mais prática:

b) Crie o script em um arquivo chamado pylink:

pylink

#!/bin/bash ln -s `pwd`/$1 `python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"`/$1

c) Dê permissão para que os usuários possam utilizá-lo:

# chmod 755 pylink

Aqui no Archlinux eu também linkei ele para uma pasta de binários locais que eu utilizo:

# ln -s `pwd`/pylink /usr/local/bin/pylink

d) Agora é só utilizá-lo para adicionar o pagination no site-packages do seu sistema:

 # cd django-pagination/
# pylink pagination

Com o django-pagination instalado podemos então modifcar o projeto:

02 – Alterando o arquivo settings.py do projeto;

Primeiramente é preciso adicionar os TEMPLATES_CONTEXT_PROCESSORS logo embaixo das MIDDLEWARE_CLASSES no arquivo settings.py do projeto no qual estaremos instalando a aplicação django-pagination:

settings.py

TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", "django.core.context_processors.request", )

Logo após também é necessário adicionar a aplicação pagination no seu settings.py:

settings.py

INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'twitter', 'pagination', )

E, em seguida adicionar o middleware da aplicação também no arquivo settings.py do projeto:

settings.py

MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.doc.XViewMiddleware', 'pagination.middleware.PaginationMiddleware', )

Por incrível que pareça não é necessário alterar nada nos models nem nas views do projeto e simplesmente alterando o templete conseguimos implementar a paginação utilizando a django-pagination.

03 – Alterando o template:

As alterações no template consistem em:

a) Adicionar a tag {% load pagination_tags %} no topo do template:

public.html

{% load pagination_tags %} <html>

b) Adicionar a tag {% autopaginate v n %} antes do loop que vai preencher a página. Onde v é a variável que contém os registros que vamos carregar no loop e n é o número de registros que queremos exibir por página, sendo o n padrão igual a 20. Segue um exemplo:

public.html

{% autopaginate tweets 10 %} {% for tweet in tweets %} <p><b>{{ tweet.user.username }}</b> said: {{ tweet.message }}</p> {% endfor %}

c) Adicionar a tag {% paginate %} logo após o loop, para aparecer o rodapé de navegação na página:

public.html

{% autopaginate tweets 10 %} {% for tweet in tweets %} <p><b>{{ tweet.user.username }}</b> said: {{ tweet.message }}</p> {% endfor %} {% paginate %}

E vualá, você terá 10 registros sendo exibidos por página…

Você pode se perguntar: Eu estou carregando todos os registros para somente apresentar 10 por vez, e vou recarregar toda vez que eu mudar de página? Isso vai ficar muito lento!

Exatamente, se você adicionar a tag {% autopaginate v n %} antes do seu loop só serão carregados os registros dá página em que você estará navegando. Então segundo as palavras do próprio autor: Você não precisa nem hesitar em não usar a django-pagination em seus projetos.

Obrigado pela atenção e até a próxima.

Montando um Ambiente de Desenvolvimento Python / Django (trunk) no Arch Linux

Aloha geral!

Quem diria, um pouco de correria e deixei o blog um de lado, nada de complicações nas instlações do Archlinux, nada legal sobre o que postar…
Acredito que com o passar do tempo meus posts terminem sendo cada vez menos “necessários” por assim dizer…

Há mais ou menos um mes, isso mesmo um mes… comecei a criar interesse por um framework web escrito em Python, cujo nome é Django… Desde então juntando material e estudando, estudando e tentando aprender alguma coisa, quando no final resolvi ajudar o pessoal do http://www.djangobrasil.org e fui instalar as coisas necessárias no meu Arch.
Foi quando eu vi que no repositório, assim como eu também faria, só tinha a versão stable do Django (que enquanto este artigo foi escrito, encontrava-se na versão 0.96) e para rodar o site do djangobrasil eu precisaria instalar a versão 0.97.

Tudo bem, fui começar a ler a documentação e achei bem simples, a parte da instlação à qual iria fazer seria sem o Apache e o modpython, pois eu ainda estaria só brincando e poderia usar o servidor que vem junto com o Django. Então fui até o http://www.djangobrasil.org e cliquei no Guia de Instalação (http://www.djangobrasil.org/documentacao/instalar/) foi então que, seguindo ao pé da letra para isntalar a versão 0.97 (lembra-se que a 0.96 já estava no pacman?) eu me deparei com o problema de que não conseguia instalar seguindo o tutorial.

Bom, como as tentativas/erros e bastante (digo bastante porque foi bastante memso) persistência, consegui instalar o django, sem utilizar o setup.py (para quem já leu o tutorial oficial de instalação, sabe do que estou falando), e então que, resolvi criar este pequeno artigo de como montar um ambiente de desenvolvimento Python/Django no seu Archilinux, espero que com o passar do tempo os blogs da comunidade aumentem e terminem fazendo mais tutoriais de instalação.
Então, sem mais demora, vamos ao processo de instalação:

1 – Instalando e configurando o Subversion:

Como está descrito no site do projeto (www.djangoproject.com) o Django está hospedado em um servidor Subversion, logo precisaremos dele para manipular baixar o Django. Instalando assim no Arch:

# pacman -S subversion

Graças ao bom e velho Pacman esse nosso trabalho fica bem fácil… Agora precisaremos de um pouco de configuração, isso fica à quesito de cada um, porém como o meu interesse era ajudar o projeto djangobrasil, eu resolvi configurar o meu Subversion como eles indicam na página de contribuição do projeto (http://code.google.com/p/djangobrasil/wiki/Contribuindo) vamos então supor que você terminou de instalar o seu subversion e gerar/editar o arquivo de configuração:

$ svn help
$ vi ~/.subversion/config

Vou colar só os pedaços que eu editei:

[miscellany]
global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.pyc *.pyo *.project *.pydevproject
enable-auto-props = yes
[auto-props]
*.py = svn:eol-style=native
*.html = snv:eol-style=native
*.css = svn:eol-style=native
*.xml = svn:eol-style=native
*.json = svn:eol-style=native
*.c = svn:eol-style=native
*.cpp = svn:eol-style=native
*.h = svn:eol-style=native
*.sh = svn:eol-style=native;svn:executable
*.txt = svn:eol-style=native
*.png = svn:mime-type=image/png
*.jpg = svn:mime-type=image/jpeg
Makefile = svn:eol-style=native

As outras linhas eu simplesmente deixei como estavam (comentadas).

Agora com o nosso subversion devidamente instalado e configurado, podemos então começar a baixar o que nos interessa, voltando ao Guia de instalação:

2 – Instalando o Python 2.5

# pacman -S python

Isso mesmo, com o pacman facilitando a nossa vida todos os Archeiros simplesmente só tem o trabalho de ver o mesmo baixando e instalando tudo automaticamente.

3 – Instalando e configurando um banco de dados:

Nesta parte fica a par de quem vai instalar o banco, como eu estou só começando no django então eu escolhi instalar o bom e velho conhecido de aplicações pequenas (sqlite), temos então a versão 3 no pacman também, logo:

# pacman -S sqlite3

4 – Baixando e instalando o django-trunk a partir do repositório Subversion:

Aqui, assim como no item acima podemos colocar a pasta do projeto em qualquer lugar no nosso sistema, como eu tive em mente de que na realidade, não deixa de ser uma cópia de trabalho do projeto django, resolvi coloca-lo na minha home mesmo.

$ cd
$ svn co http://code.djangoproject.com/svn/django/trunk django-trunk

O subversion irá baixar o django inteiro para nós, simplesmente precisamos esperar equanto o mesmo é baixado.
Vamos então instalar ele sem a necessidade de utilizar (isso mesmo, como eu creio que mais pra frente será feita a versão oficial do django a 0.97, então poderei baixar a partir do pacman, enquanto isso não acontece eu simplesmente evitei de instalar pelo arquivo setup.py por pura e simplesmente paranóia). Vamos então simplesmente linkar (diferente do modo de como eu vi no Guia de instalação) a pasta django de dentro de django-trunk (/home/user/django-trunk/django), para onde foi instalado o nosso Python (/usr/lib/python2.5/site-packages), ficando o comando assim:

# mkdir /usr/lib/python2.5/site-packages
# ln -s /home/usr/django-trunk/django /usr/lib/python2.5/site-packages/django

Pronto agora é só abrirmos o python para testar:

$ python
$ >> import django

Se não retornar nenhum erro, é porque tudo ocorreu como esperado.

5 – IDE

Aqui fica aquele velho ditado, sempre usando o editor de texto de qual gostamos, como eu termino usando o bom e velho emacs (com o python-mode), não tenho porque divulgar o mesmo.. e causar algum flamewar com os VI users… Então instale os que vocês quiserem.

Espero que tenha ajudado aos Archers que querem começar a desenvolver em Django a instalar a versão trunk, não tem complicação nenhuma, só a de que no Guia de instlaação da página oficial está considerando que você esteja usando Ubuntu/Debian.

Obrigado, e até a próxima.