Ferramentas úteis para desenvolvimento local

Ferramentas úteis que podem ajudar você a desenvolver código Python do Exercism na sua própria máquina.


Note

Esta é uma coleção de ferramentas populares na nossa comunidade. Não tem a intenção de ser prescritiva nem exaustiva. Achamos que essas ferramentas fazem bem o seu trabalho, mas certamente existem outras ferramentas igualmente boas. Se você tem uma recomendação de editor, IDE, ferramenta ou plugin, recomendamos que a adicione a este documento no GitHub.



Antes de começar a explorar, verifique se você tem uma versão recente do Python instalada. A plataforma web do Exercism atualmente tem suporte a Python 3.10 - 3.13.5 (exercícios e testes) e Python 3.13.5 (ferramental). Nosso executor de testes online atualmente usa pytest 8.4.0 e pytest-subtests 0.14.2. Nosso analisador online usa pylint 4.0.4. Usar versões diferentes de Python, pytest ou pylint localmente pode dar resultados diferentes dos do site. Para mais informações, consulte Instalando o Python localmente.


Ambientes virtuais

Os ambientes virtuais do Python oferecem isolamento leve de runtime e de pacotes. Eles ajudam a organizar seus projetos ao manter os pacotes Python que você instala agrupados dentro do diretório de um ambiente específico. Ambientes diferentes podem conter versões diferentes do runtime do Python, junto com as dependências de qualquer projeto ou biblioteca. Isso ajuda a evitar bugs e incompatibilidades causados por atualizar uma biblioteca de um projeto e "quebrar" uma dependência de outro.

Existem muitas ferramentas de ambiente virtual e similares a ambientes virtuais em uso hoje, e um movimento crescente para usar metadados de script inline, dev containers ou docker em vez de ambientes virtuais. É importante experimentar estratégias diferentes e encontrar a que combine com seu estilo de desenvolvimento e as necessidades do seu projeto. Não presuma que as estratégias aqui servem para todo mundo ou que são suas únicas opções. Para uma visão mais geral de ferramentas que não são abordadas aqui, confira este post do blog do Bas Nijholt e não perca a curiosidade.

Vamos abordar aqui três ferramentas principais de ambiente virtual: a venv da biblioteca padrão do Python; o conda env de terceiros, que usa o gerenciador de pacotes conda e (geralmente) a distribuição Anaconda do Python; e o uv, um substituto de terceiros para pip + venv. As três são bem simples de usar e/ou instalar.

Além disso, PyEnv, Poetry e virtualenvwrapper são ferramentas que ajudam a gerenciar várias versões do Python e vários ambientes Python na mesma máquina.


Criando um ambiente virtual com venv

Para criar um ambiente virtual com venv, use cd para ir até o diretório onde você quer guardar seus ambientes. Esse diretório deve ser separado do código do seu projeto e não deve ser incluído no controle de versão. Em seguida, execute o comando venv com o nome de uma pasta onde você quer guardar esse ambiente específico. A convenção comum é chamar essa pasta de <project-name-here>_venv:

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

Para ativar o ambiente virtual, execute o seguinte comando:

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

Para ativar o ambiente virtual, execute o seguinte comando:

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

Depois que uma venv está ativada, você pode executar comandos pip para instalar pacotes "dentro" do ambiente. Os pacotes instalados ficam associados à versão do Python da venv e são guardados dentro de {name_of_virtual_env}/Lib.

Desativar um ambiente virtual é feito chamando o script deactivate, que fica no mesmo diretório que o activate.


Criando um ambiente virtual com conda

A versão mais recente do conda pode ser instalada via miniconda. Este cheat sheet do conda é muito útil, assim como a documentação do conda.

Criado originalmente como um gerenciador de pacotes Python para a popular Anaconda distribution de "Python científico", o conda depois foi generalizado e ampliado. Os ambientes do Conda são parecidos com as venvs, com a diferença principal de que o conda pode criar ambientes virtuais e instalar pacotes para muitas outras linguagens de programação além do Python.

As linguagens compatíveis com o Conda incluem R, JavaScript, Ruby, Fortran, C/C++, Scala, Java e outras. Para uma comparação entre comandos do conda e do venv, veja a referência de comandos do conda.


MacOS/Linux

Para criar um ambiente conda, digite o seguinte, substituindo {name of environment} pelo nome que você escolher e python={version} pela versão do Python que você quiser. Depois disso, você pode listar quaisquer pacotes adicionais que queira instalar dentro do ambiente:

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Criar um ambiente conda no Windows usa os mesmos comandos gerais do Linux/MacOS. No entanto, é recomendável usar os prompts cmd ou powershell do Anaconda em vez de adicionar o conda ao seu path:

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

Trabalhando em projetos com uv: uv

O uv é uma ferramenta de gerenciamento de pacotes e projetos Python da Astral, escrita em Rust. Ele foi criado para substituir o pip, o venv, o poetry e outras ferramentas de empacotamento e gerenciamento de dependências do Python. Diferente do Conda ou do Mamba, o uv é especializado apenas em Python. Porém, o uv dá suporte à compilação de módulos de extensão do Python escritos em outras linguagens, como Fortran. A Astral também é a desenvolvedora do popular linter Ruff e do TY, um verificador de tipos estático para type hints do Python, ambos escritos em Rust.

Em vez de entrar em detalhes aqui, a documentação do UV é sua melhor fonte para instalação e configuração.

Wrapper de ambiente virtual

Documentação e contexto: virtualenvwrapper.

O pacote virtualenvwrapper funciona sobre o venv para gerenciar todos os seus ambientes virtuais em um só lugar. Você pode criar, copiar, excluir e alternar entre ambientes com comandos no estilo Linux, como lsvirtualenv (para listar ambientes) e mkvirtualenv (para criar um ambiente). Ele também permite adicionar ferramentas de gerenciamento extras por meio de extensões. Você pode até criar suas próprias extensões para a ferramenta usando este tutorial.


PyEnv

pyenv é o fork para Python das populares ferramentas rbenv/ruby-build, adaptadas para o Python. Ele é essencialmente um conjunto de scripts e shims que permitem definir versões do Python tanto globalmente quanto por usuário. Ele procura seguir a tradição Unix de uma ferramenta discreta, de propósito único, que faz uma coisa bem feita.

O pyenv e sua documentação estão no GitHub.



Editores e IDEs



Visual Studio Code

O Visual Studio Code (VS Code) é um editor de código gratuito criado pela Microsoft. Ele tem ótimo suporte tanto para ambientes virtuais/conda quanto para o docker (por meio do plugin do docker) e pode ser estendido com muitos plugins diferentes para testes, linting, formatação e desenvolvimento web.

Python para o VS Code

Id da extensão: ms-python.python

Cabeçalho da extensão Python no VS Code

A extensão Python da Microsoft é a extensão oficial da Microsoft para o VS Code e uma instalação altamente recomendada. Ela tem uma ampla variedade de recursos, incluindo gerenciamento de ambientes, gerenciamento de testes, linting e depuração. A partir da versão mais recente, instalar a extensão Python da Microsoft também baixa o pylance (um pacote popular para fazer linting e validar código Python) e o jupyter (para trabalhar com Jupyter Notebooks).

  • Um tutorial de configuração está disponível aqui, e a referência de configurações é muito útil.
  • Informações sobre como configurar versões do Python e trabalhar com ambientes virtuais estão aqui.
  • Informações sobre como configurar e trabalhar com unittest e pytest no VS Code estão aqui.

PyCharm

O PyCharm é uma IDE (Ambiente de Desenvolvimento Integrado) feita pela JetBrains. Ele é feito especificamente para Python e é popular entre profissionais. Assim como o VS Code, ele pode ser estendido com vários plugins, temas e formatadores, pagos e gratuitos. A versão paga também dá suporte a desenvolvimento com Django, desenvolvimento com Docker e integração com bancos de dados.

Pycharm e Pytest
  • As etapas para configurar o pytest no pycharm estão aqui.
  • O Pycharm usa unittest por padrão, então você precisa ter o pytest instalado no ambiente que está usando com o pycharm (veja os documentos sobre intérprete e ambiente acima) e depois apontar o pycharm para ele.
  • Executar testes diretamente pela interface gráfica é bem fácil, mas não esqueça de dar uma boa olhada nos parâmetros do pytest por baixo dos panos, para configurar tudo do seu jeito.
  • A documentação geral sobre executar testes e depurar no pycharm está aqui.

Spyder IDE

O Spyder é uma IDE Python gratuita, de código aberto e multiplataforma, feita sob medida para a comunidade científica. Ele normalmente vem incluído com a distribuição Anaconda do Python, mas pode ser instalado por conta própria e usado com qualquer versão do Python. Recomendamos uma instalação independente para garantir a máxima flexibilidade e evitar conflitos entre pacotes.

O Spyder tem suporte total a ambientes venv e conda. Ele inclui um terminal interativo IPython integrado, um depurador interativo e amplo suporte a gráficos e exploração de dados dentro do editor. Recursos adicionais de autocompletar código e linting são fornecidos pelo kite. As integrações com Jupyter Notebooks e ferramentas de teste são fornecidas por plugins desenvolvidos pela comunidade. Você também pode escrever seus próprios plugins usando a API do Spyder.


Emacs

O Emacs é um editor de texto gratuito, de código aberto e altamente personalizável, escrito em Lisp. Um ótimo guia de instalação e configuração está disponível no Real Python.

  • O Emacs Wiki também tem um bom guia de programação em Python com o Emacs.
  • O Full Stack Python também reúne informações e links úteis para começar com o Emacs.

Vim

O Vim é uma versão gratuita e "melhorada" do editor de texto vi, padrão do Unix. Ele está disponível em uma grande variedade de sistemas operacionais e distribuições Linux/Unix. Um ótimo guia de instalação e configuração está disponível no Real Python, e cheat sheets bem práticos estão em vimsheet, glump e rtorr.

Mesmo que você decida que editar código Python no vim não é para você, é recomendável se familiarizar com um conjunto básico de comandos. O vim ou o vi costuma ser um editor de texto "básico" ou "padrão" em distribuições Linux e Unix, e é o editor padrão para mensagens de commit do git (entre outras coisas) nesses sistemas. É bem provável que você se veja em um sistema *nix precisando editar um arquivo de configuração com apenas o vi disponível, então saber como sair do vim é (no mínimo) uma boa autodefesa.


Spacemacs

O Spacemacs (repositório no github) é uma distribuição gratuita do Emacs mantida pela comunidade, que combina funcionalidades do Emacs e do Vim.

  • A documentação oficial está aqui
  • Este guia do opensource traz um resumo rápido das opções de instalação e configuração.
  • A python layer do spacemacs adiciona funcionalidades de testes, linting, gerenciamento de ambientes e formatação de código.

Sublime text

O Sublime text é um editor de texto pago para programar, feito pela Sublime HQ Pty Ltd. Ele é parecido com o VS Code e o Atom, com muitos pacotes e plugins para personalização. Você também pode desenvolver seus próprios plugins para o editor usando Python.