Ferramentas úteis que podem ajudar você a desenvolver código Python do Exercism na sua própria máquina.
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.
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.
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.
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.
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
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
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.
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 é 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.
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.
Id da extensão: ms-python.python

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).
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.
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.coverage do pytest quebra o depurador do pycharm.
Veja configuração de execução/depuração: pytest para mais informações.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.
Perguntas frequentes do Spyder
Definindo versões/ambientes virtuais do Python no Spyder
Configurando o Spyder para executar testes unittest e pytest por meio do plugin spyder unittest
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 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.
O Spacemacs (repositório no github) é uma distribuição gratuita do Emacs mantida pela comunidade, que combina funcionalidades do Emacs e do Vim.
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.