Qual a melhor IDE para Python? A que você cria! (Windows)

Se você, assim como eu, navega por fóruns frequentemente, provavelmente já está cansado da pergunta do título, certo? A questão é que essa é uma dúvida legítima para qualquer iniciante. Por isso, vou compartilhar um pouco da minha experiência prática, adquirida ao longo de mais de vinte anos de programação em diversas linguagens. Aqui vai uma dica específica para Python: recomendo fortemente o uso do Notepad++.

Já usei várias IDEs, mas à medida que o código cresce, os problemas também aumentam. Um exemplo é o PyCharm. Quando meu projeto chegou a cinco mil linhas de código e arquivos de dados com milhares de linhas, a IDE ficou praticamente inutilizável. O PyCharm não conseguia nem exibir os arquivos de dados corretamente devido à falta de suporte para grandes volumes de informações. Iniciar a plataforma e realizar a indexação do projeto levava cerca de dez minutos, mesmo em um sistema com processador de muitos núcleos, dezesseis gigabytes de memória RAM e SSD. Posso afirmar com segurança que IDEs mais sofisticadas para Python são quase como armadilhas para iniciantes. Elas funcionam bem no início, mas quando você precisa desenvolver algo realmente sério e grande, os problemas começam a aparecer.

Ao trocar para o Notepad++, consegui reduzir significativamente o consumo de memória, economizando gigabytes de RAM. Criei meu próprio ambiente de desenvolvimento e recomendo que outros façam o mesmo. Um exemplo disso é criar um script que instale a versão do Python necessária para o seu projeto e configure um ambiente virtual. É simples: você edita no Notepad++, instala bibliotecas com o pip pelo terminal (seja Linux ou CMD do Windows), e os erros são exibidos da mesma forma que em qualquer IDE, diretamente no terminal. É uma solução simples, leve, prática e sem a necessidade de software de terceiros.

Além disso, é mais eficiente evitar as "muletas" que as IDEs oferecem, pois isso pode viciar sua programação e impedir que você aprenda conceitos fundamentais que, com certeza, farão falta no futuro.

Um detalhe importante que geralmente passa despercebido pelos programadores principalmente iniciantes é a infra estrutura do servidor que vai rodar a implementação, para tornar o ambiente web mais seguro é necessário toda uma implementação de segurança além do seu código de aplicação, por isso é interessante criar seu projeto já observando que tipo de segurança irá usar e como seu código implica em requisições, processamento e uso de disco nessa arquitetura de segurança pois isso pode acabar tornando o seu servidor cloud numa máquina de tirar dinheiro de você devido a uso intenso de recursos, o custo é outro motivo para usar o minimo de recursos necessários na fase de produção quando é necessário executar o desenvolvimemto em um servidor cloud idêntico ao servidor de produção para evitar problemas de compatibilidade e inclusive após a fase de implantação, onde serão necessárias atualizações, mas esse já é outro artigo...

Abaixo vou deixar um exemplo bem básico de criação do ambiente virtual no windows do zero, eu criei ele especificamente para windows 10 com processador amd64bits que esteja com o windows defender ativado, ele irá autorizar todo seu diretorio virtual no windows defender evitando falsos avisos de virus e ameaças, basta salva-lo como um arquivo do tipo .bat no bloco de notas ou notepad++ e executa-lo como administrador (se você quiser ver melhor os erros caso ocorram apos você editar, recomendo primeiro abrir o CMD como administrador e então executar o arquivo via linha de comando isso irá impedir do console fechar após um erro e você poderá ler as mensagens de erro.), ele está pronto para que você modifique a vontade, coloquei como exemplo de instalação o Python 3.9 e a biblioteca Flask, mas você pode colocar o que quiser ou até modificar para ler um arquivo de requerimentos de projeto.

Isso é só para dar uma ideia a iniciantes, um dos projetos que eu trabalho é justamente para automatizar instalações e implantações em servidores, esse script é um pequeno exemplo disso, espero que gostem e brinquem bastante.

Crie uma pasta e salve o arquivo dentro com o nome que desejar por exemplo "meuscript.bat" O ambiente virtual será criando na pasta onde o script estiver rodando.

=================

@echo off
setlocal

:: Solicitar privilégios de administrador
:: Verificar se o script está sendo executado como administrador
openfiles >nul 2>&1
if %errorlevel% neq 0 (
    echo Solicitando permissões de administrador...
    powershell -Command "Start-Process cmd -ArgumentList '/c %~dpnx0' -Verb RunAs'"
    exit /b
)

:: Mover para o diretório do script
cd /d "%~dp0"



:: Verificar se o Python 3.9 está instalado, caso contrário, instalar
where python
if %errorlevel% neq 0 (
    echo Python 3.9 não está instalado. Baixando e instalando...
    powershell -Command "$webclient = New-Object System.Net.WebClient; $webclient.DownloadFile('https://www.python.org/ftp/python/3.9.7/python-3.9.7-amd64.exe', 'python-3.9.7-amd64.exe')"
    start /wait python-3.9.7-amd64.exe /quiet InstallAllUsers=1 PrependPath=1
    if %errorlevel% neq 0 (
        echo Falha ao instalar o Python 3.9.
        
        exit /b 1
    )
)

:: Confirmar instalação do Python 3.9
set "PYTHON_PATH=C:\Program Files\Python39\python.exe"
if not exist "%PYTHON_PATH%" (
    set "PYTHON_PATH=C:\Python39\python.exe"
)
if not exist "%PYTHON_PATH%" (
    echo Python 3.9 não foi encontrado após a instalação. Certifique-se de que está instalado corretamente.

    exit /b 1
)
echo Python 3.9 está instalado e configurado em "%PYTHON_PATH%".

:: Definir o nome do diretório principal e do ambiente virtual
set "MAIN_DIR=codificador"
set "ENV_NAME=venv"

:: Criar diretório principal se não existir
if not exist "%MAIN_DIR%" (
    echo Criando diretório principal %MAIN_DIR%...
    mkdir "%MAIN_DIR%"
    if %errorlevel% neq 0 (
        echo Falha ao criar o diretório principal.

        exit /b 1
    )
)
echo Diretório principal %MAIN_DIR% criado com sucesso.


:: Adicionar a pasta nas exclusões do Windows Defender
echo Adicionando exceção no Windows Defender...
powershell -Command "Add-MpPreference -ExclusionPath '%cd%\%MAIN_DIR%'"
if %errorlevel% neq 0 (
    echo Falha ao adicionar exceção no Windows Defender. Continuando mesmo assim...
) else (
    echo Exceção no Windows Defender adicionada com sucesso.
)


:: Criar ambiente virtual usando o Python 3.9 explicitamente
echo Criando ambiente virtual...
"%PYTHON_PATH%" -m venv "%MAIN_DIR%\%ENV_NAME%"
if %errorlevel% neq 0 (
    echo Falha ao criar o ambiente virtual.

    exit /b 1
)
echo Ambiente virtual criado com sucesso.


:: Ativar ambiente virtual
echo Ativando ambiente virtual...
call "%MAIN_DIR%\%ENV_NAME%\Scripts\activate"
if %errorlevel% neq 0 (
    echo Falha ao ativar o ambiente virtual.
    pause
    exit /b 1
)
echo Ambiente virtual ativado com sucesso.


:: Instalar e atualizar pip
echo Instalando e atualizando pip...
python -m ensurepip
python -m pip install --upgrade pip
if %errorlevel% neq 0 (
    echo Falha ao atualizar o pip.

    exit /b 1
)
echo Pip instalado e atualizado com sucesso.


:: Instalar bibliotecas necessárias
echo Instalando bibliotecas necessárias...
pip install "flask"
if %errorlevel% neq 0 (
    echo Falha ao instalar as bibliotecas necessárias.

    exit /b 1
)
echo Bibliotecas necessárias instaladas com sucesso.


echo Ambiente virtual configurado e dependências instaladas.
echo Pronto para usar o ambiente virtual.

:: Manter o terminal aberto no ambiente virtual ativo
cmd /k

=======================

Para python a melhor IDE na minha opinião é o Pycharm, de preferência a versão professional. Não tenho nada do que reclamar dessa IDE e notepad++ é mais para quem usa Windows, então não rola pra mim que uso Linux, mas já usei muito quando estava começando. Uso Pycharm há quase 8 anos e não pretendo trocar por Vscode por exemplo, sobre o lance de ser pesada e engasgar com arquivos grandes, comigo isso não ocorre, pois busco sempre manter a lógica separadinha em módulos, cada classe com seus atributos nos devidos lugares evitando assim criar arquivos com milhares de linhas.

Pro Linux você pode usar o Kate (ele é bem parecido com o Notepad++ e ele roda no Windows, Linux e MacOS). O Kate é do projeto KDE :)
Com certeza na maioria dos casos o Pycharm funciona bem, mas existem alguns projetos que não vai funcionar bem e geralmente são aqueles online onde criar muitos arquivos torna as tarefas de monitoramento de segurança muito dispendiosos(caros), nesses casos criar menos arquivos facilita o gerenciamento de segurança e o monitoramento usando framework para a implementação do Security Content Automation Protocol (SCAP), essencial hoje em dia em projetos on-line sérios, não atoa se usa muito VIN e Nano no Linux, que nada mais é que um notepad++ ainda mais enxuto.

Eu testei um monte de editores de código e eu sou mais pro time do Emacs, mas com uma boa configuração o Vim ou NeoVim ficam muito bons também (o Zed parece muito bom, mas ainda exta em desenvolvimento e suporta poucas linguagens.. Mas quando realmente lançar irei usar bastante também. Por enquanto é de boa pra instalar no Linux e MacOS, mas no Windows você tem que compilar por conta própria ou usar o MSYS2).

Além desses existe o Kate pra quem curte um Linux. O Kate parece muito com o Notepad++ e ele é múltiplaforma, ele faz parte do projeto KDE :)

O que me conquistou no Emacs, foi o org-mode e a incrivel capacidade de personalizar ele usando o Elisp (Emacs Lisp). É meio difícil de explicar porque ele faz tantas coisas úteis e legais que fica difícil escrever tudo. Mas uma delas é escrever text e códigos juntos, bem parecido com o notebook python, só que pra qualquer linguagem e com mais funcionalidades :). (Emacs, Vim, NeoVim, Kate e Zed são editores também de baixo consumo, principalmente o Vim, NeoVim e o Kate)

Ótimas dicas! Dá para automatizar a compilação do Emacs no Windows, fica a dica para quem quiser ir mais além.
Eu instalei o Emacs usando o MSYS 2, já que é só dar um `pacman -Syu` que vai atualizar ele. Mas da pra instalar também usando o winget, o problema é que nesse caso ele não vai atualizar sozinho... A melhor solução é usa o MSYS 2 mesmo. Aí vc consegue instalar várias outras ferramentas úteis no Windows. Pra instalar ferramentas no Windows eu recomendo: - MSYS 2 - WinGet - Scoop - Chocolatey Já que com eles você facilmente pode criar script pra instalar as suas ferramentas e é bem fácil de atualizar tudo :)

Achei uma abordagem bem interessante. Mas é pra um caso bem especifico. Trabalho com pycharm criando lambdas, e não tive problemas, e uso o comunnity. Acredito que a abordagem de uso que influencia.

Concordo, para Python especificamente os projetos que são mais consumidores de recursos memória e processamento serão os que vão apresentar maiores problemas acredito.

Esse caminho de sair de uma IDE para um editor de textos simples é natural quando se vai ganhando mais experiência em programação. A IDE começa a trazer mais problemas do que resolve!

Aprendi a programar na faculdade e lá ja usávamos editor depois de sair do Pascal para o C. Foi um ótimo caminho eu diria. Em Pascal usávamos o clássico turbo pascal e em C passamos pro gcc direto.

Hoje tenho preferido vim (migrando pro nvim) com alguns poucos plugins. Dependendo do projeto, uso o VSCode.