O Emacs é um excelente editor - no entanto, é dito " para programar você precisa primeiro de um IDE " - então como você criaria um IDE no Emacs extensivamente personalizável para PYTHON com todos os recursos do IDE moderno. Eu quero poder efetivamente depurar, executar, compilar e gerenciar código. Até agora, li o assunto em que instalei o pacote Elpy, mas não tenho certeza do que mais precisamos saber e fazer para tornar isso possível.
56
Respostas:
O modo Python padrão no Emacs possui vários recursos, incluindo a conclusão de código com base no shell Python inferior, para que possa ser usado como um IDE básico sem nenhum pacote adicionado. Você também pode usar outras funções principais do Emacs com o Python. Por exemplo,
M-x compile
/M-x recompile
pode ser usado para executar testes.M-x pdb
pode executar o depurador Python e se integra ao ambiente gud do Emacs para que você obtenha pontos de interrupção em linha.Para expandir isso, existem três pacotes principais para o Emacs que tentam implementar um IDE Python com mais recursos (em ordem alfabética):
Todos eles fornecem aproximadamente os mesmos recursos:
Além desses, o Emacs também pode ajudá-lo com muitos fluxos de trabalho, mas não prescreve nenhum. Portanto, os próximos passos dependem muito de como você está usando o Python. A melhor abordagem aqui seria descobrir um bom fluxo de trabalho Python e, em seguida, tentar encontrar pacotes Emacs que o ajudem especificamente com as etapas do seu fluxo de trabalho.
Por exemplo, existem vários pacotes para trabalhar com virtualenvs (Elpy, que você menciona, vem com pyvenv) que você provavelmente deve usar. O Emacs-Jedi possui um modo de acompanhamento para a navegação de código, que pode ser útil. Se você usa muito o IPython, há um Notebook IPython para Emacs. Existem modos de suporte especiais para o desenvolvimento do Django etc. - você pode ir para http://melpa.org/ e procurar por Python para obter algumas idéias.
Fora do Python, você pode se beneficiar de alguns pacotes extras do Emacs que ajudam no desenvolvimento em geral. Projétil é um pacote genérico para gerenciamento de projetos que oferece vários recursos interessantes, como pesquisar em um projeto ou alternar entre testes e implementações. Se ainda não foi instalado como uma dependência do pacote IDE de sua escolha, você também pode usar o YASnippet, que fornece trechos inteligentes para geração de código. A coleção de trechos padrão também possui um grande número de trechos para Python.
Mais uma vez, os principais pacotes IDE acima fornecerão um ambiente saudável - as próximas etapas dependem muito dos seus fluxos de trabalho específicos.
(Divulgação completa: sou o autor de Elpy, leve isso em consideração ao ler o texto acima.)
fonte
elpy
diariamente e tenho uma pergunta rápida sobre sua resposta, quando você diz que "M-x pdb
pode executar o depurador Python" , como isso é exatamente? Eu tenho um buffer Python, e quandoM-x pdb
recebo um prompt no minibuffer que diz"Run pdb (like this): pdb my_file.py"
. Quando pressionoRET
, obtenho "ImportError: Nenhum módulo chamado pdb.pdb: 'pdb não é um pacote" Isso é com o PYthon 3.4 mais recente, depois de atualizar o pdb com o pip, o que me dá:$ pip freeze | grep pdb => pdb==0.1
pdb
não for encontrado, maspython
é encontrada localmente, então você pode executar APO usandoM-x pdb
então "Run pdb (como este): python -m pdb my_file.py`Eu encorajaria os usuários do evil-emacs a experimentar o spacemacs .
Possui uma brilhante camada python, veja os detalhes aqui: https://github.com/syl20bnr/spacemacs/tree/master/layers/!lang/python
A partir de agora, inclui:
A instalação é ridiculamente fácil, basta adicionar a seguinte linha ao seu
~/.spacemacs
:fonte
dotspacemacs-configuration-layers
. Adicione-o lá :)Eu uso o modo de propósito . Isso permite definir um ambiente bastante robusto.
Usando
elpy
,pydoc
eneotree
eu tenho um ambiente bastante robusto (no sentido de que as janelas não fazer coisas estranhas a erros). Isso também pode funcionar muito bemgud-pdb
para depuração.fonte
Aqui está um guia completo: http://wikemacs.org/wiki/Python Ele lista soluções prontas para uso (o kit de iniciação Prelude , Spacemacs, soluções para ciência de dados , ...), grandes pacotes úteis (Elpy), bem como como todos os pacotes necessários para melhorar seu ambiente. Aqui está uma visão geral .
Refatoração
Esse é o recurso mais "específico do IDE". Emacs como algumas possibilidades graças à biblioteca python Rope. A maneira mais fácil de instalar e usar é o pacote emacs-traad , no MELPA. Possui, entre outros:
Corda também está incluída no Elpy.
Manipulação de código mais simples
Temos ferramentas mais simples para ajudar na refatoração ou na manipulação de código: http://wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools
Por exemplo, o Projectile é ótimo (veja outras respostas), também temos uma ferramenta para adicionar decoradores , adicionar / remover / editar argumentos , renomear / copiar / comentar / matar um método, uma ferramenta para geração de código,…
Navegação de código
Podemos navegar como um IDE com tags e cscope: encontre as funções que chamam essa, encontre ocorrências etc.
O Emacs também possui ótimos pacotes como imenu (helm-imenu), helm-swoop (grep interativo em um buffer), emacs-helm-ag (pesquisador de prata interativo em um projeto), etc.
Executando testes
É a Elpy que fornece um bom suporte para executar testes (com o django runner, elpy ou outro). Podemos até executar apenas o teste de unidade em que estamos atualmente: muito útil! Portanto, existe uma Hydra para ajudar nisso (ciclo entre os erros, mude para o prompt do python…).
Faça suporte
Este é um pacote Emacs não específico para Python. Mas eu gosto de poder executar um destino make de qualquer lugar do projeto e escolher o comando make com a conclusão . ligação
Lidando com o recuo
Há um pequeno pacote, indent-tools , que fornece comandos para trabalhar diretamente com um bloco indentado: vá para o bloco de indentação do próximo pai-filho anterior, indent / deindent / comment / copy / kill / dobre o bloco atual , etc. Perfeito para yaml e também para Python. Doc e gif demo
Suporte do Django
veja Django . Elpy suporta o corredor django. Veja o documento elpy django . O modo django (em melpa) possui modelos destacando, comandos rápidos, conclusão de comandos de gerenciamento ,…
Também importante: excelente suporte ao Git, Github e Gitlab
O magithub pode criar PRs do github, podemos buscar problemas e inserir sua referência nas mensagens de confirmação, o magit é ótimo,… veja http://wikemacs.org/wiki/Git
fonte
As respostas aqui forneceram a maioria dos recursos importantes que o spacemacs fornece, mas sempre houve um recurso que eu não consegui encontrar - DEBUGGING (eu não encontrei nenhuma ferramenta de depuração decente que funcionasse bem com o spacemacs até muito recentemente)
Então, como eu configurei um fluxo de trabalho de depuração para meus spacemacs?
Há um ramo de recursos em desenvolvimento que usa o pacote realgud.el para fornecer uma experiência de depuração semelhante ao IDE no spacemacs: https://github.com/CeleritasCelery/spacemacs Tudo o que você precisa fazer é colocar esse ramo no seu .emacs. d e faça algumas alterações no seu arquivo ~ / .emacs.d / layers / + lang / python / packages.el
Etapas detalhadas para configurar spacemacs para depuração (respire fundo)
remote add debug-layer https://github.com/CeleritasCelery/spacemacs fetch debug-layer checkout --track debug-layer/debug-layer branch -a
Agora abra o arquivo ~ / .emacs.d / layers / + lang / python / packages.el e adicione a função abaixo ao final do arquivo
;; configure trepan3k as the python debugger to be used with realgud (defun python/pre-init-realgud() (dolist (mode '(anaconda-mode)) ;; bind trepan3k with anaconda mode (spacemacs|add-realgud-debugger mode "trepan3k")))
Essa função usa o depurador trepan3k como depurador python. Você pode alterar o valor para pdb ou ipdb ou qualquer depurador que desejar. Se você planeja usar o trepan3k, certifique-se de instalá-lo com o pip,sudo pip install trepan3k
pois ele não vem pré-instalado com sua distribuição python.Agora abra o arquivo .spacemacs e a camada 'debug' dentro dos dotspacemacs-configuration-layers como este
dotspacemacs-configuration-layers '( (python :variables python-enable-yapf-format-on-save t flycheck-disabled-checkers '(python-flake8) flycheck-checker 'python-pylint ) debug )
Isso iniciará a sessão de depuração e você poderá adicionar e excluir pontos de interrupção usando as combinações de teclas realgud explicadas aqui: https://github.com/realgud/realgud#source-window-commands
Você Terminou!
fonte