Review: 6 Python IDE's gaan naar de mat

Van alle statistieken die u zou kunnen gebruiken om de populariteit en het succes van een taal te meten, is een onmisbare factor het aantal ontwikkelomgevingen dat ervoor beschikbaar is. De stijgende populariteit van Python in de afgelopen jaren heeft een sterke golf van IDE-ondersteuning met zich meegebracht, met tools die zowel gericht zijn op de algemene programmeur als op degenen die Python gebruiken voor taken als wetenschappelijk werk en analytisch programmeren.

Deze zes IDE's met Python-ondersteuning bestrijken het hele scala aan use-cases. Sommige zijn meertalige IDE's die Python-ondersteuning hebben via een add-on of een herverpakking van een ander product met Python-specifieke extensies. Elk profiteert van een iets ander publiek van de Python-ontwikkelaar, hoewel velen ernaar streven nuttig te zijn als universele oplossingen.

Een groot aantal van de IDE's zijn tegenwoordig frameworks die zijn uitgerust met plug-ins voor specifieke talen en taken, in plaats van apps die van binnenuit zijn geschreven om de ontwikkeling in een bepaalde taal te bevorderen. Daartoe kan uw keuze voor IO worden bepaald door of u al dan niet ervaring heeft met een andere IO uit dezelfde familie.

Gerelateerde video: Waarom Python programmeren eenvoudig maakt

Voor degenen die niet zo'n ervaring hebben, is PyCharm een ​​van de beste plaatsen om te beginnen. Het is vriendelijk voor nieuwkomers, maar niet verlamd in zijn functieset. In feite heeft het enkele van de handigste functies van alle hier geprofileerde IDE's. Veel van deze functies zijn alleen beschikbaar in de betaalde versie van het product, maar er is genoeg in de gratis versie om een ​​beginnende ontwikkelaar op weg te helpen.

LiClipse en de Python Tools for Visual Studio (PTVS) zijn goede keuzes voor ontwikkelaars die al goed bekend zijn met respectievelijk Eclipse en Microsoft Visual Studio. Beide zijn complete ontwikkelomgevingen - zo compleet als je zult vinden - die Python behoorlijk goed integreren. Het zijn echter ook uitgestrekte, complexe applicaties die gepaard gaan met veel cognitieve overhead. Als je een van beide al onder de knie hebt, zul je het een uitstekende keuze vinden voor Python-werk.

De Python-incarnatie van ActiveState's Komodo IDE is natuurlijk voor degenen die de Komodo IDE al voor een andere taal hebben gebruikt, en het heeft unieke kenmerken (zoals de reguliere expressie-evaluator) die zijn aantrekkingskracht zouden moeten vergroten. Komodo verdient aandacht van zowel beginners als experts.

Spyder is het meest geschikt om te werken met IPython of de andere wetenschappelijke computertools in distributies zoals Anaconda, in plaats van als een ontwikkelingsplatform voor Python in het algemeen. Ten slotte is IDLE het beste gereserveerd voor snelle en vuile scripts, en zelfs op dat punt kan het een achterbank zijn naar een zelfstandige code-editor met een Python-syntaxis-plug-in. Dat gezegd hebbende, IDLE is er altijd wanneer je het nodig hebt.

IDLE

IDLE, de ontwikkelomgeving die bij vrijwel elke installatie van Python wordt geleverd, kan worden beschouwd als de standaard Python IDE. IDLE is echter geenszins een vervanging voor een volwaardige IDE; het is meer een chique bestandseditor. Toch blijft IDLE een van de standaardopties voor Python-ontwikkelaars om een ​​voorsprong te krijgen op de taal, en het is stapsgewijs verbeterd met elke release van Python, vooral met Python 3.5. (Zie deze pagina voor een interessante bespreking van de recente inspanningen om IDLE te verbeteren.)

IDLE is volledig gebouwd met componenten die worden geleverd met een standaardinstallatie van Python. Afgezien van de CPython-interpreter zelf, omvat dit de Tkinter-interfacetoolkit. Een voordeel van het bouwen van IDLE op deze manier: het werkt platformonafhankelijk met een consistente reeks gedragingen. Een nadeel is dat de interface erg traag kan zijn. Het afdrukken van grote hoeveelheden tekst vanuit een script in de console is bijvoorbeeld vele ordes van grootte langzamer dan wanneer het script rechtstreeks vanaf de opdrachtregel wordt uitgevoerd.

IDLE heeft een paar directe gemakken. Het heeft een ingebouwde read-eval-print loop (REPL) of interactieve console voor Python. In feite is deze interactieve shell het eerste item dat aan de gebruiker wordt gepresenteerd wanneer IDLE wordt gestart, in plaats van een lege editor. IDLE bevat ook een aantal tools die in andere IDE's worden gevonden, zoals het geven van suggesties voor trefwoorden of variabelen wanneer u op Ctrl-Space drukt, en een geïntegreerde debugger. Maar de implementaties voor de meeste van deze functies zijn primitief in vergelijking met andere IDE's en verborgen door Tkinter's beperkte selectie van UI-componenten. En de verzameling add-ons van derden die beschikbaar zijn voor IDLE (een van die projecten is IdleX) is lang niet zo rijk als bij andere IDE's.

Kortom, IDLE is het beste voor twee scenario's. De eerste is wanneer je een snel Python-script wilt hacken, en je hebt hiervoor een vooraf geconfigureerde omgeving nodig. De tweede is voor beginners die net aan het werk zijn. Zelfs beginners zullen snel moeten overstappen naar een meer robuuste optie.

Spyder

Spyder is de afkorting van "Scientific PYthon Development EnviRonment." Het is bedoeld voor gebruik als een werkbank voor wetenschappelijk computergebruik met Python, en dat wordt weerspiegeld in de functieset, de verpakking en het algemene gedrag van de IDE. Spyder heeft handige functies voor algemene Python-ontwikkeling, maar tenzij je voornamelijk met IPython en wetenschappelijke computerpakketten werkt, ben je waarschijnlijk beter af met een andere IDE.

De grootste reden om Spyder niet als een algemene Python-ontwikkelomgeving te gebruiken, is niet de set functies, maar het installatieproces. Spyder wordt niet geleverd als een zelfstandig uitvoerbaar bestand op de manier van een product als Visual Studio of PyCharm. In plaats daarvan wordt het geïnstalleerd als een Python-pakket. De eenvoudigste manier om naar Spyder te gaan, is door een Python-distributie te installeren die er voorgeladen bij wordt geleverd, zoals Anaconda van Continuum Analytics.

1. Beschikbaar als extensie, maar ondersteunt alleen syntaxiscontrole. 2. Beschikbaar als Eclipse-add-on. 3. Verkrijgbaar in commerciële versie. 4. Zie integratie-instructies. 5. Gebruikt versiebeheersystemen die op de host zijn geïnstalleerd.
  IDLE Komodo LiClipse PyCharm PTVS Spyder
Cython-ondersteuning Nee Ja (1) Nee Ja (3) Nee Nee
Versiebeheer Nee Ja Ja Ja Ja Ja (5)
Grafische debugger Nee Ja Ja Ja Ja Nee
IPython-ondersteuning Nee Nee Nee Ja Ja (4) Ja
Macro's Nee Ja Ja (2) Ja (2) Ja Nee
Meerdere tolken Nee Ja Ja Ja Ja Ja
Refactoring Nee Ja Ja Ja Ja Nee
Database-integratie Nee Ja Ja (2) Ja (3) Ja Nee
HTML / CSS / JavaScript Nee Ja Ja Ja Ja (3) Nee

Spyder bevat IPython, dat een vervanging is voor de conventionele Python-console. Wanneer u opdrachten in IPython typt, kunnen de resultaten interactief worden verkend. Elk commando kan worden behandeld als een "cel" of een codesegment waarvan de uitvoer kan worden opgeslagen en verzameld.

Spyder voegt hieraan toe door celgedrag te integreren in zijn code-editor. Als u speciaal opgemaakte opmerkingen in een Python-script invoegt, kunt u het in cellen verdelen en die cellen in de IPython-interface in willekeurige volgorde uitvoeren. Op deze manier is het gemakkelijk om Spyder te gebruiken om prototypen van cellen te maken om later in een IPython-notebook te plaatsen.

Voor het debuggen gebruikt Spyder de ingebouwde Pdb-debugger van Python. De opdrachtregelinterface voor Pdb staat ver af van de meer geavanceerde grafische debuggers in PyCharm of LiClipse, hoewel je de Winpdb grafische debugger als een optionele add-on kunt installeren. Helaas kun je Winpdb niet gebruiken met Python 3, omdat het afhankelijk is van pakketten die nog steeds alleen beschikbaar zijn in Python 2 (specifiek wxPython). Daartoe zullen de meeste mensen met Pdb zitten.

Spyder is ook beperkt in vergelijking met andere IDE's in zijn integratie met versiebeheersystemen zoals Git en Mercurial. Als u in een geïnitialiseerde projectrepository werkt, zullen bestanden in dat project snelmenu-items voor de repository tonen. Dat gezegd hebbende, er zijn geen mechanismen voor versiebeheer rechtstreeks in Spyder ingebouwd; u moet de juiste versiebeheertoepassing al op systeemniveau hebben geïnstalleerd, met de uitvoerbare bestanden beschikbaar vanaf het systeempad. Spyder bevat ook geen tools voor het beheren van repositories in de gebruikersinterface. Deze tekortkomingen zijn niet zo erg als je al de gewoonte hebt om repositories zelf te beheren, maar ze vormen extra hindernissen als je dat niet bent.

Spyder heeft handige functies voor algemene Python-ontwikkeling. Een die me meteen opviel, is het variabele verkennervenster in de interface van Spyder. Terwijl u opdrachten in IPython typt, worden alle gemaakte variabelen daar gelogd en kunnen ze interactief worden verkend. Een ander handig hulpmiddel is de User Module Deleter. Schakel het in en de Python-interpreter zal alle modules helemaal opnieuw laden wanneer het een Python-script uitvoert. Op deze manier kunnen alle wijzigingen die in de code van een module worden aangebracht, worden toegepast op een lopend programma zonder de hele applicatie opnieuw te hoeven starten.

ActiveState Komodo IDE

De reeks IDE-producten van ActiveState omvat versies voor bijna elke belangrijke taal. De benadering van het bedrijf hierop lijkt een beetje op hoe LiClipse werkt: neem het basisproduct (in dit geval de Komodo IDE) en rust het uit met add-ons voor Python-ontwikkeling.

Komodo is het meest geschikt voor degenen die al bekend zijn met incarnaties van Komodo voor andere talen. Mensen met dergelijke ervaring zullen zonder problemen in het Python-product duiken. Als je het koud krijgt, zijn er enkele UI-eigenaardigheden die het vermelden waard zijn. De menubalk van de app wordt bijvoorbeeld niet standaard weergegeven; je moet rechtsboven op het hamburgermenu klikken of op de Alt-toets tikken om het weer te geven. Het is bedoeld om de zaken schoon en eenvoudig te houden, maar is voor sommige smaken misschien te minimalistisch.

Aan de andere kant zijn sommige interfacekeuzes meteen aantrekkelijk. Ik vond vooral de "minikaart" leuk, een uitgezoomd voorbeeld van de code in de editor, waarmee je in één oogopslag naar elk deel van het bestand dat je aan het bewerken bent, kunt zien. LiClipse heeft een vergelijkbare functie, maar de implementatie van Komodo is gemakkelijker om mee te werken.

De meeste Python IDE's zijn uitgerust met Python-specifieke syntaxiscontrole of code linting. Komodo IDE heeft dat allemaal, maar het is ook ontworpen om tegelijkertijd versie 2 en 3 van de taal te ondersteunen. Als je bijvoorbeeld een Python-shell wilt starten en je hebt interpreters voor beide versies van Python beschikbaar in je systeempad, dan kun je expliciet beide versies kiezen. Ik heb vaak snelle tests van het gedrag van een bepaalde instructie in Python 2 en Python 3 naast elkaar moeten uitvoeren, en dit is een handige manier om dit te doen.

Komodo biedt u een optie om meerdere run- of debug-configuraties toe te passen voor een toepassing, maar het is iets minder flexibel dan een vergelijkbare functie in LiClipse. Wanneer u een app start, krijgt u de keuze uit profielen die u op het programma kunt toepassen. U kunt de profielkiezer uitschakelen en direct beginnen met het uitvoeren van een profiel, maar het uitschakelen kan alleen voor de hele applicatie worden gedaan, niet voor een bepaald project. Ik geef de voorkeur aan het vervolgkeuzemenu van de werkbalk van LiClipse, waaruit u een bepaald profiel kunt selecteren of het meest recent gebruikte profiel met een klik kunt starten.

Een werkelijk prachtige toevoeging is een toolkit voor reguliere expressies. Typ een reguliere expressie in een deelvenster van deze tool, geef enkele voorbeeldgegevens op om deze toe te passen in een tweede deelvenster en de resultaten verschijnen in een derde deelvenster. De tool ondersteunt ook meerdere soorten regex, inclusief Python, en laat je zelfs de resultaten zien van match-, split- en vervangingsbewerkingen. Ik worstel de hele tijd met het maken van werkende regexes, dus deze tool is een uitkomst.

Een andere handige out-of-the-box-functie is een catalogus met veelgebruikte codefragmenten voor Python. Klik bijvoorbeeld op "lopen", en de editor voegt de standaardcode in om de os.walkfunctie van Python te gebruiken om door mappen te bladeren, een van de functies waarvan ik de syntaxis en het gebruik nooit kan onthouden. Andere talen zijn ook inbegrepen. Als u bijvoorbeeld HTML met standaarduitgaven moet invoegen in een Django-sjabloon die u aan het koken bent, heeft Komodo u gedekt.

De standaard Python-distributie wordt geleverd met ondersteuning voor SQLite uit de doos. Komodo IDE vult dit aan door een ingebouwde verkenner voor SQLite-databases te bieden. Het is een soort uitgeklede versie van de "workbench" desktop-apps die worden geleverd voor MySQL of Microsoft SQL Server. De interface is onhandig en onaantrekkelijk, maar hij is perfect geschikt voor snelle inspectie of voor het spotten van een database. Het is niet bedoeld om te dienen als een volledige database-IDE.

Je zult veel andere handige functies in Komodo vinden, zelfs als ze niet specifiek op Python zijn gericht. Met de macrorecorder kunt u veelvoorkomende acties opnemen en afspelen, hoewel sommige soorten acties, zoals kiezen welk app-profiel u wilt gebruiken bij het starten van een app, niet lijken op te nemen. Een andere functie maakt realtime samenwerking tussen Komodo-gebruikers mogelijk, hoewel ze zich moeten aanmelden voor accounts bij ActiveState om toegang te krijgen tot de service.

LiClipse 

De Eclipse IDE wordt vaak bekritiseerd als traag en overbelast, maar de brede taalondersteuning en de galerij van add-ons voor ontwikkeling maken het een krachtig en waardevol hulpmiddel. Python wordt ondersteund in Eclipse via de PyDev-add-on. Als je Eclipse voor niets anders gebruikt dan Python-ontwikkeling, kun je het beste LiClipse pakken. (Tijdens deze review gebruik ik LiClipse als een afkorting voor de bundel functies die door LiClipse en PyDev samen worden geleverd.)

LiClipse is een herverpakking van Eclipse met PyDev, samen met een hele reeks andere Eclipse-componenten die bedoeld zijn om de gebruikerservaring te verbeteren. Bij de lancering ziet LiClipse eruit en gedraagt ​​het zich veel als de reguliere editie van Eclipse, met uitzondering van de LiClipse-branding en pictogrammen, dus ervaren Eclipse-gebruikers zouden niet veel moeite moeten hebben om de werkruimte naar wens in te stellen. Als je geen ervaring hebt met Eclipse, heb je wat tijd nodig om te leren hoe de werkruimte van Eclipse werkt (dit aspect van Eclipse wordt regelmatig bekritiseerd). In die zin is LiClipse het beste voor mensen die al vertrouwd zijn met Eclipse, misschien omdat ze erin werken in een andere taal.

Score kaart Vermogen (30%) Prestaties (10%) Gebruiksgemak (20%) Documentatie (20%) Add-ons (20%) Totaalscore (100%)
IDLE 3.5.1 6 7 8 7 5 6.5
Komodo IDE 10.1.1 8 8 7 8 8 7.8
LiClipse 3.1 9 7 7 8 9 8.2
PyCharm 2016.2.3 9 8 9 8 8 8.5
Spyder 3.0.0 7 7 7 7 6 6.8
Python Tools 2.2 voor Visual Studio 2015 9 8 7 9 9 8.5