Seu ambiente de desenvolvimento

Editores de texto

Qualquer editor de texto irá funcionar para programar em Python. Entretanto, usar um editor mais poderoso pode deixar sua experiência um pouco mais fácil.

Vim

O Vim é um editor de textos que utiliza atalhos do teclado para a edição, ao invés de menus ou ícones. Existem alguns plugins e configurações para no Vim que auxiliam o desenvolvimento em Python. Se você desenvolve apenas em Python, um bom começo é definir as configurações padrão para indentação e quebras de linha para valores compatíveis com a PEP 8. Em seu diretório inicial, abra um arquivo chamado .vimrc e adicione as seguintes linhas:

set textwidth=79  " lines longer than 79 columns will be broken
set shiftwidth=4  " operation >> indents 4 columns; << unindents 4 columns
set tabstop=4     " a hard TAB displays as 4 columns
set expandtab     " insert spaces when hitting TABs
set softtabstop=4 " insert/delete 4 spaces when hitting a TAB/BACKSPACE
set shiftround    " round indent to multiple of 'shiftwidth'
set autoindent    " align the new line indent with the previous line

Com essas configurações, novas linhas são inseridas após 79 caracteres e a indentação é programada para 4 espaços por pressionamento da tecla tab. Se você também usa Vim para outra línguas, existe um ótimo plugin chamado indent, que cuida da configuração da indentação para arquivos de origem do Python.

Também há um plugin de sintaxe muito prático chamado syntax, que apresenta algumas evoluções quando comparado ao arquivo de sintaxe incluído no Vim 6.1.

Esses plugins lhe fornecem um ambiente básico de desenvolvimento em Python. Para extrair o máximo do Vim, você deve continuamente checar seu código para erros de sintaxe e conformidades com a PEP8. Felizmente, PEP8 e Pyflakes farão isso por você. Se o seu Vim está em conformidade com +python, você pode também utilizar alguns plugins muito úteis para realizar essas checagens de dentro do editor.

Para checagens de PEP8 e pyflakes, você pode instalar o vim-flake8. Agora você pode mapear a função Flake8 para qualquer tecla de atalho ou ação que desejar no Vim. O plugin vai mostrar os erros no lado inferior da tela, e fornecer uma maneira simples de saltar para a linha correspondente. É muito útil chamar essa função sempre que você salvar um arquivo. Para fazer isso, adicione a seguinte linha ao seu .vimrc:

autocmd BufWritePost *.py call Flake8()

Se você já utiliza syntasic, você pode configurar ele para rodar Pyflakes na escrita e mostrar erros e advertências na janela de consertos rápidos. Um exemplo de configuração que faça isso e que também mostre o status e mensagens de advertência na barra de status pode ser:

set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_auto_loc_list=1
let g:syntastic_loc_list_height=5

Python-mode

Python-mode é uma solução complexa para trabalhar com código em Python no Vim. Ele tem:

  • Checagem assíncrona de código Python (pylint, pyflakes, pep8, mccabe) em qualquer combinação

  • Refatoração de código e auto-complemento com Rope

  • Dobra rápida Python

  • Suporte virtualenv

  • Busca através da documentação Python e execução de código Python

  • Correção automática de erros PEP8

E mais.

SuperTab

SuperTab é um pequeno plugin de Vim que faz a completação do código mais conveniente utilizando-se a tecla <Tab> ou qualquer outra tecla customizada.

Emacs

Emacs is another powerful text editor. It is fully programmable (lisp), but it can be some work to wire up correctly. A good start if you’re already an Emacs user is Python Programming in Emacs at EmacsWiki.

  1. O próprio Emacs vem com o modo Python

TextMate

TextMate brings Apple’s approach to operating systems into the world of text editors. By bridging UNIX underpinnings and GUI, TextMate cherry-picks the best of both worlds to the benefit of expert scripters and novice users alike.

Sublime Text

Sublime Text is a sophisticated text editor for code, markup and prose. You’ll love the slick user interface, extraordinary features and amazing performance.

Sublime Text has excellent support for editing Python code and uses Python for its plugin API. It also has a diverse variety of plugins, some of which allow for in-editor PEP8 checking and code “linting”.

Atom

Atom is a hackable text editor for the 21st century, built on atom-shell, and based on everything we love about our favorite editors.

Atom is web native (HTML, CSS, JS), focusing on modular design and easy plugin development. It comes with native package control and plethora of packages. Recommended for Python development is Linter combined with linter-flake8.

IDEs

PyCharm / IntelliJ IDEA

PyCharm is developed by JetBrains, also known for IntelliJ IDEA. Both share the same code base and most of PyCharm’s features can be brought to IntelliJ with the free Python Plug-In. There are two versions of PyCharm: Professional Edition (Free 30-day trial) and Community Edition (Apache 2.0 License) with fewer features.

Python (on Visual Studio Code)

Python for Visual Studio is an extension for the Visual Studio Code IDE. This is a free, light weight, open source IDE, with support for Mac, Windows, and Linux. Built using open source technologies such as Node.js and Python, with compelling features such as Intellisense (autocompletion), local and remote debugging, linting, and the like.

licenciado MIT.

Enthought Canopy

Enthought Canopy is a Python IDE which is focused towards Scientists and Engineers as it provides pre installed libraries for data analysis.

Eclipse

O plugin mais popular para desenvolvimento com Python é PyDev <http://pydev.org>`_ da Aptana.

IDE Komodo

O IDE Komodo é desenvolvido pela ActiveState e é um Ambiente de desenvolvimento integrado para Windows, Mac e Linux. KomodoEdit é a alternativa de código aberto.

Spyder

Spyder é uma IDE especificamente construída para trabalhar com bibliotecas científicas de Python. (ou seja, Scipy). ele inclui integração com o pyflakes, pylint e com o rope.

O Spyder tem código aberto (é grátis), oferece complementação de código, destacador de sintaxe, um navegador de classe e funções e inspeção de objetos.

WingIDE

WingIDE is a Python specific IDE. It runs on Linux, Windows and Mac (as an X11 application, which frustrates some Mac users).

WingIDE offers code completion, syntax highlighting, source browser, graphical debugger and support for version control systems.

NINJA-IDE

NINJA-IDE (from the recursive acronym: “Ninja-IDE Is Not Just Another IDE”) is a cross-platform IDE, specially designed to build Python applications, and runs on Linux/X11, Mac OS X and Windows desktop operating systems. Installers for these platforms can be downloaded from the website.

NINJA-IDE is open-source software (GPLv3 licence) and is developed in Python and Qt. The source files can be downloaded from GitHub.

Eric (The Eric Python IDE)

Eric is a full featured Python IDE offering sourcecode autocompletion, syntax highlighting, support for version control systems, python 3 support, integrated web browser, python shell, integrated debugger and a flexible plug-in system. Written in python, it is based on the Qt gui toolkit, integrating the Scintilla editor control. Eric is an open-source software project (GPLv3 licence) with more than ten years of active development.

Ferramentas do intérprete

Ambientes virtuais

Ambientes virtuais fornecem um meio poderoso para isolar dependências de pacotes do seu projeto. Isso significa que você pode usar pacotes particulares para um projeto em Python sem instalar eles em todo o seu sistema, evitando potenciais conflitos de versão.

To start using and see more information: Virtual Environments docs.

pyenv

pyenv is a tool to allow multiple versions of the Python interpreter to be installed at the same time. This solves the problem of having different projects requiring different versions of Python. For example, it becomes very easy to install Python 2.7 for compatibility in one project, whilst still using Python 3.4 as the default interpreter. pyenv isn’t just limited to the CPython versions - it will also install PyPy, anaconda, miniconda, stackless, jython, and ironpython interpreters.

pyenv works by filling a shims directory with fake versions of the Python interpreter (plus other tools like pip and 2to3). When the system looks for a program named python, it looks inside the shims directory first, and uses the fake version, which in turn passes the command on to pyenv. pyenv then works out which version of Python should be run based on environment variables, .python-version files, and the global default.

pyenv isn’t a tool for managing virtual environments, but there is the plugin pyenv-virtualenv which automates the creation of different environments, and also makes it possible to use the existing pyenv tools to switch to different environments based on environment variables or .python-version files.

Outras ferramentas

IDLE

IDLE is an integrated development environment that is part of Python standard library. It is completely written in Python and uses the Tkinter GUI toolkit. Though IDLE is not suited for full-blown development using Python, it is quite helpful to try out small Python snippets and experiment with different features in Python.

Ele provê as seguintes funcionalidades:

  • Janela terminar do Python (intérprete)

  • Editor de texto com múltiplas janelas que coloriza código em Python

  • Instalação de depuração mínima

IPython

O IPython oferece um kit de ferramentas para ajudar a você usar o Python interativamente. Seus principais componentes são:

  • Consoles poderosas de Python (terminal- e baseadas em Qt).

  • A web-based notebook with the same core features but support for rich media, text, code, mathematical expressions and inline plots.
  • Suporte para visualização interativa de dados e uso de conjunto de ferramentas GUI.

  • Flexível, Intérpretes embutidos para carregar em seus próprios projetos.

  • Ferramentas para computação paralela interativa e de alto nível.

$ pip install ipython

Para baixar e instalar IPyhton com todas as suas dependências opcionais para o notebook, qtconsole, tests, e outras funcionalidades

$ pip install ipython[all]

BPython

bpython is an alternative interface to the Python interpreter for Unix-like operating systems. It has the following features:

  • Realce de sintaxe em linha.

  • Readline-like autocomplete with suggestions displayed as you type.
  • Lista de parâmetros esperados para qualquer função do Python.

  • “Rewind” function to pop the last line of code from memory and re-evaluate.
  • Enviar o código embutido para um pastebin.

  • Salvar código inserido para um arquivo.

  • Auto indentação.

  • Suporte Python 3.

$ pip install bpython

ptpython

ptpython is a REPL build on top of the prompt_toolkit library. It is considered to be an alternative to BPython. Features include:

  • Realce de sintaxe

  • Autocompletado

  • Edição multi linha

  • Modo Emacs e VIM

  • Embedding REPL inside of your code
  • Validação de sintaxe

  • Tab pages
  • Support for integrating with IPython‘s shell, by installing IPython pip install ipython and running ptipython.
$ pip install ptpython