About to start a job doing python; it's been over 10 years since I've written any. All I remember is lots of indentation.<p>I've been doing C# for the last 10 years, so I'm quite out of touch with the latest in python development.<p>What's the best IDE for writing python? (on Mac OS X)<p>I see a lot of options out there, but would like to hear what people are actually using. Mostly I want an IDE that supports debugging.<p>I see that Xcode supports python, does anyone use that?<p>Thanks!
I've never used an IDE for Python development, I find a text editor is good enough. As Jugurtha said, Sublime Text on Linux is great, I use it daily. Good luck with the new job!
IDE's aren't as big of a deal in Python as they would be in C#.<p>A lot of people just pick a nice text editor to do their work in. I like to use xcode on the mac, but I use Python's built in debugger from the command line for debugging. I find it easier than fooling with an IDE.<p>[1] <a href="http://stackoverflow.com/questions/4228637/getting-started-with-the-python-debugger-pdb" rel="nofollow">http://stackoverflow.com/questions/4228637/getting-started-w...</a>
If you don't want to stray too far from your comfort zone, Visual Studio has a pretty good Python Tools extension. I'm also a C# dev and I find it really nice to be able to play around with Python in the environment I'm most comfortable in.<p><a href="https://pytools.codeplex.com/" rel="nofollow">https://pytools.codeplex.com/</a><p>Edit: Ah, just saw you mentioned OS X. I like Sublime Text on that end.
Not any more indentation than code in any other language (you indent anyway, whether that's enforced or not).<p>Python has IDLE (which is cross-platform), but I prefer writing with Sublime Text(on Ubuntu).<p>Here's a list for you:<p><a href="http://en.wikipedia.org/wiki/List_of_integrated_development_environments_for_Python#Python" rel="nofollow">http://en.wikipedia.org/wiki/List_of_integrated_development_...</a><p>Good luck, codr.
First choice would be Komodo Edit hands down! If you're willing to spend a bit more then you can go for Komodo IDE.<p>If you want a lighter weight editor then Sublime Text is a decent option.
GNU/Linux emacs user for Python dev.<p>The ability to browser a code easily, when you don't actually know the code, is a lot of time that will be saved.<p>Pycharm is the best tool I know that does it out of the box.<p>I don't know about its debugging facility (I think you mean setting break points), probably <a href="https://github.com/narfdotpl/debug" rel="nofollow">https://github.com/narfdotpl/debug</a> will work just fine. I've been doing 1 year and a half of debugging Python code and used it three times. Most of the time the workflow is this:<p>0) add logs?<p>1) reproduce the bug<p>2) read the logs?<p>3) read the code?<p>4) if the best fix is found fix it else restart at 0)<p>Other useful tools for debugging:<p>- <a href="http://dpaste.com/hold/1751069/" rel="nofollow">http://dpaste.com/hold/1751069/</a> this is the basic version of what I use at work. It's a data descriptor [1]<p>- <a href="http://faulthandler.readthedocs.org/" rel="nofollow">http://faulthandler.readthedocs.org/</a> "for when there is no traceback"<p>- Since you do UI, most likely you'll deal with asynchronous callback style code (non-yield based), the traceback of a callback is not always useful ie. you want to know to which code it is answering to. For that matter you need tweak the event-loop code... having this patch at hand is helpful. e.g. say you do a asynchronous call to retrieve something in the database, the call probably looks like "query(callback=query_callback)", when the "query_callback" will be called by the event loop with the result of the query as arguments, most likely the immediate top frame is the event-loop (if it's not the previous frame, it's the one before...) and "query" function will not be in the callstack of course... If "query_callback" is used as a callback of several asynchronous calls, you can not find the "calling code" with "find usage" of your IDE... I think asyncio fix this<p>Profiling:<p>- <a href="http://www.vrplumber.com/programming/runsnakerun/" rel="nofollow">http://www.vrplumber.com/programming/runsnakerun/</a><p>- <a href="https://github.com/bdarnell/plop" rel="nofollow">https://github.com/bdarnell/plop</a><p>- <a href="https://github.com/wyplay/pytracemalloc" rel="nofollow">https://github.com/wyplay/pytracemalloc</a> it is integrated in Python 3.4<p>I also use gdb on python coredumps.<p>[1] <a href="http://www.cafepy.com/article/python_attributes_and_methods/python_attributes_and_methods.html#creating-descritors" rel="nofollow">http://www.cafepy.com/article/python_attributes_and_methods/...</a>