28 comments

[ 4.6 ms ] story [ 91.4 ms ] thread
The title misrepresent the content, just trying to clarify it in the second sentence with "Each tool follows the Unix philosophy of doing one thing well".

Almost everyone will expect an IDE such as JetBrains PyCharm, Visual Studio, and Eclipse.

It seems that BeeWare has produced its own set of tools and has described these as "The IDEs of Python" even though they are neither IDEs, there are other IDEs, and there is nothing official about BeeWare's tools.

Too bad, because it makes sense to get some exposure for these particular tools that probably few people have ever heard of.

I think it's a pun -- on "Beware the ides of March".
If your first inclination in marketing your project is to make it a terrible pun instead of something more descriptive and correct, you're doing it wrong.
I was also expecting something along those lines. I haven't used much Visual Studio for Python development, but in my experience PyCharm is much better than PyDev(Eclipse). I did see someone use VS, but I can't really compare it to PyCharm.

For me, PyCharm has been so good, it's become one of the main reasons why I've been staying with Python, because no matter how much I complain about the issues of Python ("it's slow", 2 vs 3, Python in Windows 64 bit, to name a few), PyCharm does a lot of things right and helps in development.

It's also great to welcome new developers: just install it and it'll all magically work (99% of the time). Not the experience we had with Eclipse.

Can you talk about the main things that make PyCharm good for you? I've tried it but decided to stay with command line + sublime text... What are the game changers? Thanks
For me, it was very easy to use coming from Matlab, and the bult-in console allowed for the same "exploratory programming" that Matlab is praised for. I never feel like Pycharm is in the way like a lot of IDEs can be (and the reason why I usually prefer command-line).
PyCharm's debugger is awesome. [1] It really is faster then the import pdb;pdb.settrace(). (which happens to get committed sometimes). Code coverage displaying is really well implemented. Autocompletion and introspection is great. On a lot of frameworks as well. Continuously displays python linting issues and suggests fixes. Vagrant support works really good, even for remote debugging and running tests/devservers. The git implementation is quite useful, although I do fall back on command line every now and then. You can customize pycharm's interface a lot (impossible to explain in just a line or 2). If you like to edit distraction-free... there is a mode for that too. It has an internal git system. So if you screw stuff between git commits, you can revert to a previous version nonetheless (local version) There are a few ways to open files: a tree view, an "alfred"-like method and probably more.

1: https://www.jetbrains.com/pycharm/features/#debugger

Things i do not use: The internal terminal; iTerm just is a lot better. The interal ipython console. I prefer iTerm + iPython. FTP and oldschool stuff like that. Did not try the new profiling feature yet.

Hmmm will be looking into the debugger!
You should note remote debugging is awesome too. You can remote into external servers or even a local vagrant and debug it as if it was local code.
Do you ever have problems with the debugger losing its place, failing to step properly, or not being able to evaluate commands, when using a VM with Vagrant? I was really excited to get PyCharm working with our development VM, but these issues made the debugger useless for me.
The only issue I had was sometimes the debugger wouldn't stop at a breakpoint, but this was rare and easily dealt with by putting a small cluster of breakpoints at the problem area.
We have two main environments to develop in/for: Windows and Linux. When we tried Eclipse it sort of worked, but every time we set up the environemnt someone had trouble either with the VCS, or just getting PyDev installed. We also had some issues on Windows with Java not being 64 bit in 64 bit machines, which triggered some obscure Eclipse error that said absolutely nothing about the Java version, nor the 32/64 bits.

On the other hand, PyCharm is just an installer and everything works out of the box. It comes with very interesting code inspections, which spotted things that PyLint never warned us about -- biggest issue we had was a method that wasn't implemented anywhere (and luckily nobody ever called). The code inspections also nag about PEP-8 compliance, which is a good thing to clean up the code if you're coming from a codebase that never cared too much about it. And if there's something you don't want, you can turn specific inspections off so it won't bother.

To me, it is visually very similar to Sublime Text (I use one of the "dark" themes, that I find visually less demanding than the others) and then there are the little things that help all arround, like the bar at the left of code, in between the editor and line numbers, that show the VCS diff in real time. This information is also on the right side, on a thinner bar that sits behind the scrollbar (which, I have to admit, feels weird at first), that also shows the inspections results and helps navigate the code.

The other big thing for me comes also from code analysis, and is the "go to definition" shortcut, that helped me many times to find the specific class/function definition I was looking for when we had to work with code from other teams that had the horrible habit of doing "from module import ". It may not seem too hard, but when you have 5 of those things, and you got to those modules and find the same thing, it's more than a nuissance.

I'm aware we don't use it to its fullest (its more oriented to web frameworks, like Flask and Django), but in our team it has helped a lot. I get the feeling that we are all working smoother since we adopted it, and that feeling is shared amongst the team.

It was hard to think of specific things to highlight, but I tried my best. Does this "quick review" help?

* It was actually called somewhere, but our tests and our clients had never triggered that codepath for about... 6 months I believe. Yes, this issue says something about us too (as a team, and our tests), but having the tool spot it for you helps a lot.

I'd also like to mention the vcs integration is awesome. Full GUI interaction with GIT, including a GUI DiffMerge, and more. It makes a huge difference.
Some of the features of PyCharm that I use every day are built-in, and probably have plugins in Sublime that do similarly:

- The best key-binding interface I have ever seen in the settings. - Find Definition: I can press F3 (my keybind for it) and see where a class, method, or variable was declared. This makes it trivial to - integrated git-blame ("annotations") when in a git repo

In short, it's a Very Polished environment that does all the things you can likely already do with Sublime + Console, and does them in a fast and convenient way.

PyCharm also has built in git support, but I still do that on the terminal. I also use the console to run my app, tests, etc, though PyCharm does have some integrated testing ability, because it happens to be more convenient for the codebase I work in. I don't consider the IDE a replacement for those, just a convenient way to Read/Explore code.

I started with Sublime, switched to Pycharm, and then switched back to Sublime for a Ruby project. I REALLY wanted to standardize on Sublime, but I wound up switching back to Pycharm. The debugger was the killer feature for me. Many of the other features of Pycharm are quite good, but also good or good enough in Sublime / the terminal and individual tools. But damn, tracing through code in the Pycharm debugger is SO nice that I felt forced to switch back.
It's great, I use it too. However there are times where it will just lock up. Literally I've right clicked on some file and the whole ide froze for about a minute before the right click window appeared.
Well, it makes a change from the Ides of March.
" BeeWare follows Python community code of conduct."

I'll pass. I'm not Adria Richards, and I don't indict innocent men.

These tools look like something I might use, I've never been a fan of IDE's (mostly because the work I've done haven't been large enough in scale to necessitate one). It's a pretty misleading title though.
This is probably the best name for anything ever.
Why would I use Rubicon instead of pyobjc?
Anyone can compare toga vs kivy?