Seu ambiente de desenvolvimento

../_images/33175624924_7febc46cc4_k_d.jpg

Editores de texto

Just about anything that can edit plain text will work for writing Python code; however, using a more powerful editor may make your life a bit easier.

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 o 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.

These plugins supply you with a basic environment for developing in Python. To get the most out of Vim, you should continually check your code for syntax errors and PEP8 compliance. Luckily pycodestyle and Pyflakes will do this for you. If your Vim is compiled with +python you can also utilize some very handy plugins to do these checks from within the 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:

  • Asynchronous Python code checking (pylint, pyflakes, pycodestyle, mccabe) in any combination
  • Refatoração de código e auto-completar com Rope
  • Dobra rápida Python
  • Suporte virtualenv
  • Busca através da documentação Python e execução de código Python
  • Auto pycodestyle error fixes

E mais.

SuperTab

SuperTab é um pequeno plugin de Vim que faz a função de auto-completar 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.

O Sublime Text possuí um suporte excelente para edição de código Python além de usar Python em sua API de plugins. Ele também possuí uma grande variedade de plugins, dos quais habilitam checagem de PEP8 no editor e “linting” de código.

Atom

Atom é um editor de texto para o século XXI, altamente extensível, construído sobre o atom-shell e baseado em tudo o que amamos nos nossos editores favoritos.

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

Python (no Visual Studio Code)

Python for Visual Studio is an extension for the Visual Studio Code. This is a free, lightweight, open source code editor, 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.

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.

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

The most popular Eclipse plugin for Python development is Aptana’s PyDev.

IDE Komodo

Komodo IDE is developed by ActiveState and is a commercial IDE for Windows, Mac, and Linux. KomodoEdit is the open source alternative.

Spyder

Spyder is an IDE specifically geared toward working with scientific Python libraries (namely SciPy). It includes integration with pyflakes, pylint and rope.

Spyder is open source (free), offers code completion, syntax highlighting, a class and function browser, and object inspection.

WingIDE

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

WingIDE oferece autocompletar, destacamento de sintaxe, browser nativo, debugger gráfico e suporte para sistemas de controle de versão.

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 source code 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.

Mu

Mu is a minimalist Python IDE which can run Python 3 code locally and can also deploy code to the BBC micro:bit and to Adafruit boards running CircuitPython.

Intended for beginners, mu includes a Python 3 interpreter, and is easy to install on Windows, OS/X and Linux. It runs well on the Raspberry Pi.

There’s an active support community on gitter.

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, while 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 the Python standard distribution. 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:

  • Powerful Python shells (terminal- and Qt-based)
  • A web-based notebook with the same core features but support for rich media, text, code, mathematical expressions and inline plots
  • Support for interactive data visualization and use of GUI toolkits
  • Flexible, embeddable interpreters to load into your own projects
  • Tools for high level and interactive parallel computing
$ pip install ipython

To download and install IPython with all its optional dependencies for the notebook, qtconsole, tests, and other functionalities:

$ pip install ipython[all]

BPython

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

  • In-line syntax highlighting
  • Readline-like autocomplete with suggestions displayed as you type
  • Expected parameter list for any Python function
  • “Rewind” function to pop the last line of code from memory and re-evaluate
  • Send entered code off to a pastebin
  • Save entered code to a file
  • Auto-indentation
  • Python 3 support
$ 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
  • Emacs and Vim Modes
  • Embedding REPL inside of your code
  • Syntax validation
  • Tab pages
  • Support for integrating with IPython’s shell, by installing IPython (pip install ipython) and running ptipython.
$ pip install ptpython