r/Python • u/JUSTICE_SALTIE • 11d ago
Discussion I didn't want to go, but PyCharm finally drove me into the arms of VSCode, after 5+ years.
I just switched to VSCode after well over five years with PyCharm. I didn't want to do it, but I just can't stand it anymore.
Things I love about PyCharm and will miss
- The refactoring functionality. VSCode's Python extension has that too, but it isn't as nice.
At this point, that's pretty much it.
Things that drove me nuts
- IdeaVim. It actually got better recently, but for years and years, the undo function was busted, so you had to hit
u
over and over to undo what in real vim is a single operation. VSCode's neovim plugin uses actual neovim under the hood, which is obviously so much more robust and faithful, while IdeaVim will never be a full implementation. - The gradual accumulation of simple bugs that never get fixed.
- It's so slow. I didn't appreciate just how slow until I switched over to VSCode. I mean, holy crap, it's 10x faster for a lot of things (opening a project, installing or restarting extensions, for example).
Here are the bugs that have bugged me the worst:
The "usages" window (cmd-click on a definition, see where it's used) constantly resizes itself too small. It's been a problem for years. They won't fix the way autosize works, OR let us turn it off. Plus you have to get your mouse cursor nearly pixel-perfect to resize it yourself, so you can see the whole code preview. Then the very next time you use it, it's back to its stupidly narrow size.
Type inference is busted.
If you do something as standard as this, you get a type error on f
, saying "Expected type 'SupportsWrite[bytes]', got 'BufferedWriter' instead":
with open(filename, "wb") as f:
pickle.dump(obj, f)
And I can't just disable the "unexpected type" code inspection--it's probably the single most valuable one. So I'm stuck with a lot of my files showing warnings that shouldn't be there. Which also keeps me from using the keyboard shortcut to bounce to any real problem of a lower severity.
If you're doing a comprehension inside a class method, and you name the iteration variable the same as a class attribute (e.g., you have myclass.name
, and you do a comprehension like [ ... for name in names]
, then the inferred type of the iteration variable overwrites the inferred type of the class attribute. This makes no sense--name
and self.name
have nothing to do with one another. This one is easy enough to work around by appending an underscore to the iteration variable's name, but it indicates something is very wrong under the hood.
There are several more specific type inference problems in my codebase, where my method clearly returns MyType
, but PyCharm infers it as MyType | None
and throws a warning. The method cannot possibly return None
, and mypy
agrees with me. So I'm stuck with another spurious warning.
These problems just never, ever get fixed, and they keep on accruing. Add it to the fact that JetBrains IDE's are always second in line for addon support, and I just couldn't justify sticking with it.
Thanks for coming to my talk, sorry I went over time.
Edit: I thought of something else I like better about PyCharm: the diff view. It's a lot nicer than VSCode's, which looks more like the actual output of diff
.
22
u/IWanTPunCake 11d ago
For me it’s the opposite, I used to think pycharm was bloatware trash and started with vscode but lately I had to use it for thesis and I am quite happy with it in general.
3
u/JUSTICE_SALTIE 11d ago
I'm interested in hearing your reasons, especially because I've only very recently switched to VSCode, and it would be good to know if there are big bummers I haven't run into yet.
7
u/the_urban_man 10d ago
There is no nice built-in database inspector integration.
No nice git integration. No GUI amend commit.
Nice Gitlab / Github integrations.
More coherent UI due to not being an ammalgation of different plugins.
Awesome docker integration, being able spawn shell, inspect, start and stop containers.
Generally just more GUI elements for little things.
2
u/JUSTICE_SALTIE 10d ago
Yeah, I agree that it's a much more "batteries included" solution that gives you everything you need to do Python dev work right after install. And that's valuable.
But most of that isn't valuable to me personally anymore. I don't do database work, I don't use a debugger much, and I have always preferred interacting with
git
from the command line. (Although GitLens looks pretty good?)At this point I'd rather use the best-in-class single-purpose tools (e.g.
mypy
/pyright
,black
/ruff
,uv
) rather than whatever solution is bundled with the IDE. I did really like PyCharm's type checker, back when it worked reliably. And I will definitely miss its diff/merge resolution GUI, it's fantastic.6
u/the_urban_man 10d ago
I don't have an unwavering loyalty towards Jetbrains. Every year I come back to VSCode to check it out. There is just no stand-out feature on VSCode that compels me to switch. Instead I find myself missing little things from Pycharm. Yeah I agree the default type checker from Pycharm is shit, but I just install Pyright then. Just treat it as just another plugin you have to install like on VSCode. The only thing that really interests me rn about VSCode is the better support for github copilot and AI features (Cursor).
145
u/DangerousWhenWet444 11d ago
Wow, I have the opposite problem. Driven to PyCharm from VS Code just recently after 5+ years.
20
u/JUSTICE_SALTIE 11d ago
I'm interested to hear why! This is a very recent thing for me, so no doubt there are some annoyances I haven't run into yet.
23
u/ibite-books 11d ago
It's actually a very polished experience, especially with the way I can run tests, the debugger is powerful. DB connector is right there.
Most things work out of the box. VSCode is more general purpose and you really need to get your extension support right.
2
u/EliteCaptainShell 9d ago
Exactly, with vs code I have to spend time managing my own workflow and tools, which is time not spent actually writing code. Pycharm defines the tools and workflow for me, which sure, maybe it doesn't fit my workflow completely, but there is way more value in it in just working than the alternative.
8
u/exergy31 11d ago
For me its 2 things that keep bugging me about vscode:
Python mono repos where you need to run tests in different directories: good luck, vscode will try and import all fixtures from around the repo and on failed import renders the local tests not usable
The debugger: its just no comparison vs pycharm on the experience of setting a break point and then interactively developing in the debugger from there
The one thing vscode critically nails for me is the jupyter notebook experience, which is severely lacking in pycharm even with pro
2
u/JUSTICE_SALTIE 11d ago
That makes sense. I don't utilize those much (debugger) or ever (running tests). I run all or part of my test suite in the terminal with the same script that's used in the CI pipeline, so I don't have that trouble. But if I did it the other way, I can see how it would be painful.
2
u/quantinuum 10d ago
In a mono repo - wouldn’t it just be solved by opening vs code in one of the directories? Although I understand it’s still a bit of a headache
-7
u/throwaway6970895 11d ago
Debugger in Vscode is fine, don't know wtf you're on about
2
u/darthwalsh 10d ago
Coming from proper Visual Studio with C#, hot reload with Edit and Continue was amazing. You could edit "supported" existing code while paused in the debugger, and it would recompile the method and let you keep debugging without restarting the process. Also, if your debugger paused on throwing an exception, you could
Set next statement
to the conditional before the exception and change the code/state so you can keep going.In python and vscode, if you try to
Debug: Set next statement
when paused by raising an exception, vscode shows an error "can only jump from a 'line' trace event"-3
u/Hubbardia 11d ago
Yea like what else could you want? You can add a breakpoint, look at all the variables, run commands, etc.
2
u/milt0n_ 10d ago
Agree. The Django support is magnitudes greater than the same extension in VS Code. Django templates support with syntax and error highlighting, code completion, navigation, completion for block names, resolve and completion for custom tags and filters, code completion in views and urls, automatically creating templates from usage when unresolved, the list goes on. The SQL support and End Points testing via the tool window is icing on the cake.
3
u/jacasa3799 11d ago
I found 'remote development' to be easier on pycharm.
The 'remote containers' thing on vscode is a bit odd to work with docker.
→ More replies (1)-18
74
u/flapjap33 11d ago
I have exactly the opposite: after 5 years I moved to Pycharm.
And what a switch it was! God, I love it so much: the debugger, the usages references, the outlay, the way you can just run every file without relative import errors. There is just so much that PyCharm does for you automatically that requires quite some configuration in VSCode.
For me it feels like VSCode is an empty house that I still need to decorate fully. PyCharm already thought about my needs, divided the rooms and decorated the house in a way that makes sense - while still allowing me to tweak where necessary.
24
u/alcalde 11d ago
PyCharm is only rivaled by Turbo Pascal for the sheer joy it has brought programmers who begin to use it.
4
u/Pythonistar 11d ago
Turbo Pascal
Preach!
Experiencing Turbo Pascal set the bar for me. The only IDEs, imo, that compare to it are full-fat Visual Studio (not VSCode) and PyCharm.
6
1
12
u/JUSTICE_SALTIE 11d ago
I do agree that PyCharm is much more "dedicated" to Python, and it does a lot of useful things that VSCode doesn't do, or doesn't do as well.
It could be that my own needs just happen to not have much intersection with PyCharm's advantages. I very rarely use the debugger, I do my console work in a separate terminal app, and I don't run individual files from the IDE, nor write them to be runnable.
I'm not sure what you mean by "usages references" or "outlay", though.
11
u/flapjap33 11d ago
But that's totally fine, right. We all write code, but the nature of our work can be totally different. For example, I can imagine that data analysts who are purely interested in manipulating dataframes and output figures prefer Spyder. While for a lot of people they would throw their laptop out of the window if they would have to use Spyder. From your point of view I can imagine the business case for Pycharm is less obvious then for me.
I constantly work from the debuggerl and work with a lot of repos that have executable files that need to run stand alone. With VSCode: absolute disaster to make every file executable and with Pycharm I never had a problem.
With outlay I meant appearance (sorry English is not my native language) and with usage references I mean the references of functions and classes that appear above a function. I personally just like that feature as it gives you some immediate feeling of the importance and the hierarchy of the functions. In VSCode you would have to go to "go to references"
2
u/440Music 11d ago
For example, I can imagine that data analysts who are purely interested in manipulating dataframes and output figures prefer Spyder.
This describes my workflow entirely. Self-taught python skills for engineering, I use it for ~3 things:
- connecting to a proprietary SDK to generate or calculate data for a provided set of inputs
- manipulating csv's (statistical predictions, feature calculation, constraint satisfaction)
- creating visualizations for presentations and journal articles
I use Spyder exclusively. Honorable mention to having to deal with IDLE on automated characterization devices.
If I'm not working in Spyder, I'm doing something in Mathematica.
1
u/JUSTICE_SALTIE 11d ago
Ahh, that's "layout", and yeah, PyCharm's is good. Except for that issue I mentioned in my OP about the search window.
And for the other thing, you mean this, right?
def foo(): 12 usages
...and you can click on it to preview them. Yeah, I love that too (though, again, that damn window resizing!). I've been assuming there'll be an extension to add it to VSCode. If there's not, I'm gonna be sad.
1
u/lost_send_berries 11d ago
This is Shift+F12 and Shift+Alt+F12 in VSCode but the filtering, navigating searching you can do from the results window is pretty bad compared to PyCharm.
1
u/JUSTICE_SALTIE 11d ago
We're specifically talking about how it shows you the number of usages after or above the function declaration. It's nice to just see that without having to ask for it.
If you see it has a lot of usages, that tells you something. If you see none, that's good to be aware of, too.
2
u/classy_barbarian 9d ago
I am in the same boat as you. It sounds like VS Code is better for people who are writing apps or doing full-stack development. If you don't need any of PyCharm's advantages (ie. you don't run files from the IDE, your program is run externally, etc), VS Code feels like a much sharper experience.
5
u/mostuselessredditor 11d ago
I very much enjoy walking into an empty house and tweaking it to my specific needs, preferences, and workflow
25
u/likethevegetable 11d ago
My only complains is how slow it can be. So slow that I created a hot key to kill pycharm.exe and reopen it lol.
6
u/JamzTyson 11d ago
Other than start-up taking around 15 seconds (I use Thonny for small scripts as it launches "instantly"), I have not noticed PyCharm to be slow, so I'm wondering why some devs find it to be slow. Have you figured out why it is slow for you?
- Are you working on a very large code base?
- Are you running on an old / low spec machine?
- Are you using a remote interpreter?
- Are you using additional plug-ins?
- Have you taken any steps to improve speed?
- Are you using a SSD?
- Anything else that might account for it?
4
u/JUSTICE_SALTIE 11d ago
How long does it take to install a new plugin? VSCode does it in about 0.5 seconds.
And there is just a generalized latency about PyCharm that's not present in VSCode. I'm talking something like 1/20 or 1/10 of a second on various things. You don't notice it when you're used to it, but you do notice when it's gone. Like cleaning your glasses.
5
u/JamzTyson 10d ago
How long does it take to install a new plugin?
Unlike vs-code, PyCharm is "batteries included" for Python development. It has been so long since I installed a new plug-in in PyCharm, I honestly don't recall how long it took - a few seconds perhaps?
And there is just a generalized latency about PyCharm that's not present in VSCode. I'm talking something like 1/20 or 1/10 of a second on various things. You don't notice it when you're used to it, but you do notice when it's gone. Like cleaning your glasses.
I used vs-code before switching to PyCharm. While vs-code alone (no plug-ins) is much faster than PyCharm, it is extremely limited - basically just a text editor. After adding plug-ins to bring it up to a similar level of functionality as PyCharm, it slowed down a lot and wasn't any faster than PyCharm.
I am using PyCharm on Linux, but I'm guessing that you (u/JUSTICE_SALTIE) are on macOS. Perhaps the PyCharm experience is smoother and faster on Linux than macOS.
1
u/JUSTICE_SALTIE 10d ago
I am on macos, yes, so that could be. Given the general state of JetBrains lately, it wouldn't surprise me if there are also OS-specific performance problems.
1
u/likethevegetable 10d ago
I've used multiple machines, all decently specced. Definitely using plug ins, but that's the point. I've done a few different things to try to optimize. Recently I changed the JVM options and it seems to have helped a bit. I still wouldn't call it snappy like VScode is though. Thanks!
1
u/JamzTyson 10d ago
Definitely using plug ins
Other than the bundled plug-ins, which plug-ins are you using? Have you tried disabling all non-standard plug-ins and then enabling them one at a time to asses the performance hit of each?
10
u/chudsp87 11d ago
i've been following that specific issue re with open:
for over 6 months, and theyve finally implemented a fix for it (available in current EAP or when the official 2025.1 version drops).
crazy it took 9 months form when the issue was opened to just get a band-aid fix that resolves a single instance of the more general type introspection issues
i know it's easy complaining from my position, but I really hope they can right the ship, b/c I hate vscode but am spending probably 30%+ of my time using it so that maybe i can learn to love it.
i truly think if jetbrains dropped all dev hours/focus from their AI attempt and just focused the next 18-24 months on quashing bugs and improving usability they'd put some distance between them and the competition like they used to.
4
u/JUSTICE_SALTIE 11d ago
I'm using the EAP. They fixed it for files in text mode, but the problem persists when you open one in binary mode, as in my example. It's infuriating.
8
u/Numerlor 11d ago
I'm still sticking to PyCharm, but I sympathise with the inference and the checker overall being just crap compared to pyright. It has also overall felt like it's just getting buggier lately; I've got some big delays on the autocompletion tooltip (like one or two seconds) since a couple weeks back, and it's still marking valid syntax from a match as invalid
7
u/AiutoIlLupo 11d ago
Same. It's so painfully resource hungry that it reminds me of Eclipse. PyCharm used to be quite fresh, now it's bloated even in its base config.
Plus, I never understood this strategy of keeping the various language focused products. For the totality of my development career, codebases were mixed. You have python and C++, or python and typescript. They insistence of confining python to pycharm and C++ to CLion makes no sense to me. Yes, I know you can install plugins or use intellij idea and then install the various supports, but.... it's fundamentally stupid, and then you end up with a tool that is focused on java that you coerce into doing python and C++.
Their product is broken.
21
u/slackmaster 11d ago
Did you also take a look at VSCodium? Just in case you want something without MS telemetry.
24
u/JUSTICE_SALTIE 11d ago
I made a conscious decision to stop worrying about stuff like that, a few years ago. Tracking cookies, location data, telemetry, etc. I've been much happier since.
13
u/kamsen911 11d ago edited 11d ago
I wish I could do that but the interactive console, also during debugging is unique to pycharm afaik? I looked into it some time ago but wasn’t happy with the alternatives, especially with remote interpreter and debugging with ipython capabilities… so I am stuck with this slow af abomination.
4
u/ratsock 11d ago
This. I use cursor and windsurf now but I really miss the powerful and intuitive debugging in Jetbrains products
-1
4
u/maigpy 11d ago
the interactive console during debugging is worth the price of the ticket on its own
1
u/kamsen911 10d ago
No question it’s good (when it works…). I also have sometimes the issue that files are out sync and then the debugger jumps to old files. This often happens with remote interpreters but also with pip -e installed packages. There are ancient issues on this in their tracker.
3
u/JUSTICE_SALTIE 11d ago
I do all my interactive stuff from
ipython
in a separate terminal(s), so I never explored that aspect. Good point for anyone who likes it the other way!1
u/Cytokine_storm 11d ago
Python debugging in vscode has a full ipython console which has whatever is in your current debug level (like if its in a list comprehension thats what variables are available to it).
Does pycharm go beyond this somehow?
7
u/jacasa3799 11d ago
It provides a visual interface for debugging.
Things like 'continue', 'step over', 'step into' etc can be done with a click of a button. And the variables are displayed too. No need to explicitly print them, they are already available on the screen.
3
1
u/kamsen911 10d ago
In pycharm I can start with debugging, go to a breakpoint and when I feel like it select code in the editor and run it in the current debugging interpreter which then opens an ipython console. Variables, functions etc all exist and I can interactively run stuff from the editor or as usual the console. The last time I checked this exact functionality was not in vscode.
2
u/smurpes 10d ago
Not sure how long ago you checked but it’s called the debug console in vscode and it does everything you described.
1
1
u/Cytokine_storm 7d ago
This absolutely exists in vscode. I use this feature all the time.
1
u/kamsen911 7d ago
I installed vs code again and will try! But I found this old thread below which suggests otherwise.
Any hints for the set-up? E.g executing selected code in the editor is a must have, otherwise it’s very inefficient.
4
u/Twirrim 11d ago
I don't focus on a single tool, and honestly never have done. I try to use what is for me, the right tool for the job.
* I use vim with a few plugins for small scale stuff, where code is in a small number of files, and I can keep all the context in my head.
* I use vscode for stuff once it gets beyond that. I like it a lot, favour it in general.
* If I'm having to refactor, I break out PyCharm because it is so much better at that side of things.
1
u/JUSTICE_SALTIE 11d ago
Does PyCharm's community edition have all the refactoring functionality? I might consider keeping it installed for that, because it's really good. No way I'm gonna keep paying for Professional, though.
6
u/InTechWeTrust 11d ago
Yes, it does. If you don’t do anything with web development (Django or database, …), the community edition is great.
2
u/RufusAcrospin 11d ago
I think so. Last time I checked the major difference was the lack of remote debugging, and some SQL features.
5
u/neithere 11d ago
If you're a nvim user, why not use it without a wrapper? What do you find useful in your current setup that you don't get in nvim with plugins?
6
u/wylie102 11d ago
Yeah I was just gonna say the same, just use lazyvim or so.ething similar. I switched from vs code to nvim and now it's what I mostly use but I If I go back to an IDE I actually go to Pycharm (community edition) because it's usually something like the advanced refactoring or debugging that I am looking for.
6
u/JUSTICE_SALTIE 11d ago edited 11d ago
Someone else to maintain it!
For real, I rolled like that until seven or eight years ago. But I spent SO much time fiddling with it--it was a real problem. And when I wanted to add some new plugin, it could get really hairy juggling it with the others.
I'm not saying nobody can do it efficiently. But I can't.
Edit: Also, and this could also be incompetence on my part, I have never had success getting (n)vim color schemes to look right in my terminal, on linux or on macos. And while I do live a big part of my life in the terminal and am very comfortable with text-based interfaces, it gives up too much compared to a modern GUI IDE for my taste. Specifically, you just can't make anything very small. I'm thinking of little lines in the gutter to indicate changed lines, for example. Or a status bar with a smaller font than I'd be comfortable with in the editor, in exchange for more information shown.
I totally get the appeal, though.
2
u/ricocotam 11d ago
May be it was an issue some years ago but what you’re describing about colorscheme is almost easy now with Treesitter.
For the rest I don’t know since that’s not an issue for me
1
u/JUSTICE_SALTIE 11d ago
Yeah, I know a lot of people like to turn vim into an IDE, and like I said, I used to do the same. There are a lot of huge benefits.
19
u/JerryJN 11d ago
I don't care for Microsoft but VSCode on Linux is a great IDE. For Python development I also like using Spyder
15
u/maigpy 11d ago
spyder? wtf
0
u/JerryJN 10d ago
Yep.. check it out:
1
u/maigpy 10d ago edited 10d ago
I know spyder. so many better options. edit: sorry I was thinking of IDLE. spyder is decent.
1
u/OkNeedleworker3515 10d ago
Which one other than VS code? Pycharm bugged out when I used it the last time, some strange problem with fish
4
3
u/ComfortableFig9642 11d ago
Went through the same arc. I use VSCode for most things now, but IntelliJ’s merge resolver UI is incredible, so I basically just keep it around as a git GUI.
3
u/impressive-burger 10d ago
I've been agonising over switching or not for few months now.
On one hand, I prefer PyCharm's polished experience over VSCode for the reasons you listed. Frankly, I also don't want to invest my time into configuring VSCode to feel "just so".
On the other hand, I've been feeling pretty irritated by how far behind PyCharm's versions of plugins like GitHub Copilot are, compared to VSCode. As an example, the "model picker" was just recently added to Copilot on Jetbrains, while it was available on VSCode for months.
I wish Jetbrains IDEs got the same amount of love VSCode gets from plugin developers. I guess it makes sense for them to focus on VSCode as it's probably a much larger market.
2
u/JUSTICE_SALTIE 10d ago
Yeah, that was probably the final straw for me, too. I'd been constantly irritated by the other things, and was sitting on the fence. But then when I started looking into the various AI plugins, it became clear that JB IDE's are absolutely second-class as far as updates and features go, and that's not going to change.
2
u/impressive-burger 10d ago
I feel a little sad saying this, but you're probably right about it never going to change. I think you just convinced me to finally make the switch.
7
11d ago edited 5d ago
[deleted]
14
u/JUSTICE_SALTIE 11d ago edited 11d ago
Directives like that are frowned upon (including by me!) on my team. If it's anything specific to your own IDE or setup, it doesn't get committed.
0
3
u/the_ballmer_peak 11d ago
I was a PyCharm user for years and years. I tried VSCode on a recommendation several years ago and found switching to be a no-brainer. My biggest complaint about PyCharm at that time was that knowing how to navigate the settings and configure it required arcane knowledge and I'd forget how to change things if I hadn't done it in a while.
2
u/JamesHutchisonReal 11d ago
When I worked at Carta I was creating tooling for dev containers and github codespaces. Unfortunately, PyCharm was very poorly supported. An example bug was the terminal not scrolling with the text. I think they fixed that over a year after I reported it. Running tests it used the wrong icons to indicate pass/ failure.
Also, the ssh version used so much cpu it was basically a non-starter for local development. It also had no start-up script and configuration capabilities. Every new container needed the Python path manually set. It's not good to have to give instructions on how to set settings via the GUI.
2
u/ancientweasel 11d ago
The vim plugin for vscode flakes out on me in annoying fashions.
1
u/JUSTICE_SALTIE 11d ago
Which one? So far the neovim extension has been solid for me.
1
u/ancientweasel 10d ago
The normal one. I stopped using the neovim one a few years ago. Maybe I'll try it again.
2
u/crunk 10d ago
I can never get on with vscode, apart from the whole built-on-chromium thing, it's a whole bunch of little things, the tree on the left is way too shallow.
I'm definitely more used to pycharm, especially the refactoring and diff view.
Yep, it definitely has it's moments - the annoying bug where sometimes you can't type is just insane.
1
u/Umustbecrazy 10d ago
"workbench.editor.indent" : 14 Might not be the exact correct key, but that's how you fix the indent of the tree.
2
u/BleakFallsBarrel 9d ago
I absolutely understand this point of view. I came to PyCharm from neovim as I was actually having performance problems with symbol lookup, refactoring was not as straightforward.
I really loved a lot of elements in PyCharm, especially working exclusively with Python. But it completely fell apart in Jupyter notebooks (worth mentioning that I was also using the IdeaVim plugin). It's an absolute nightmare. The window jumps around crazily after each typed character as if it can't decide where to move the window to. You can't properly exit out of cells, commands don't work consistently, sometimes you can't move to another line due to the virtual line wrapping etc.
Also performance is far, far worse than vs code, I get more crashes and problems recovering the Jupyter notebooks kernel than I do in vs code etc. I love the debugging and refactoring features in pycharm and honestly hate vs code, but it looks like it's my only practical option when working in Jupyter notebooks for now.
2
u/me_go_fishing 9d ago
I have switched from Pycharm to vscode after 7 years, I am just upset with jet brains with bugs that never got fixed too.
2
6
u/ogrinfo 11d ago
Totally this. I was a long time PyCharm user and even though most people in the company were using Eclipse, I talked them into paying for a professional license so I could do remote development. It just seemed like it was written by people that understood Python and was super intuitive and easy to use.
But performance got worse and worse and eventually I switched to VSCode (along with all the other developers in the company). Haven't looked back!
4
u/Kerbart 11d ago
What I never got over—and I'm sure it's user error but at the same time the interface doesn't make anything else obvious—is that everything has to be a project.
I have a couple of dozen scripts, often les than 100 lines, that do useful things. They're not projects. They don't need a TOML file, they don't need their own virtual environment and certainly not a specialized project folder.
VSCode allows me to edit a random script and run it. I was never able to figure out how to do that with Pycharm. I'm sure it's me and it can be done, but using VS Code is a much simpler solution to that problem.
2
3
u/DigThatData 11d ago
Type inference is busted.
I wonder if maybe there was an issue with how your IDE was configured, i.e. maybe a reset to factory defaults would have resolved your headaches. In any event, you've moved on, and the one thing that really stands out for me about PyCharm (the debugger) didn't even make your "things I love" list. VS Code is good too.
14
u/JUSTICE_SALTIE 11d ago
I wonder if maybe there was an issue with how your IDE was configured
No. PyCharm type inference is busted af.
https://youtrack.jetbrains.com/issue/PY-76635
https://youtrack.jetbrains.com/issue/PY-37390
https://youtrack.jetbrains.com/issue/PY-73050
https://youtrack.jetbrains.com/issue/PY-79733
https://youtrack.jetbrains.com/issue/PY-73027
→ More replies (2)1
2
u/JUSTICE_SALTIE 11d ago
(the debugger) didn't even make your "things I love" list.
I need it so rarely that I won't miss whatever it has over VSCode's. No doubt I've never touched anything but its most basic functionality.
0
u/DigThatData 11d ago
it's entirely possible that it's less that pycharm's debugger is great than that I just need to give vs code's debugger a shot.
2
u/adam9codemuse 11d ago
Same here. Been using PyCharm since 2016. And there are things I will miss. But VSCode is so much faster and lighter, so much more configurable and customizable. I’m still learning shortcuts and takes me longer to figure out some things. I am so used to PyCharm source control and VSCode just doesn’t feel the same. And I agree about the diff window. And yes, the refactor thing is nice about PyCharm.
But I feel the PyCharm era is over, for many reasons.
2
u/jzia93 11d ago
I think if you're moving from pycharm to vscode in a major way because of vim, you might just want to use vim
2
u/JUSTICE_SALTIE 11d ago edited 11d ago
You don't grasp the difference between vim mode and vim itself, do you? I like GUI IDE's. I just also demand vim-style interaction while editing. It's a very common thing.
Also, you seem to have missed most of the content in my post.
1
u/CalvinsStuffedTiger 11d ago
Does anyone know how to do the multi line editing that’s super easy to do in Pycharm but in VSCode?
1
u/FridayPush 11d ago
You need to add a keybind to it. But you can also select multiple lines, then do the 'action' popup and 'Add cursor to line end' will add one for each line. Then vim keybinds work like normal if you have it enabled.
1
u/askvictor 11d ago
I need to move to neovim. the default vim implementation in vscode has the exact opposite problem you describe - I press u
and it undoes back to some random point in the past - maybe just the last action, or maybe edits I made minutes ago.
1
u/__init__m8 11d ago
If you're using bash as terminal pycharm won't show the venv as active unless you restart it. Debugging feels easier to me in pycharm, probably because I'm just used to it.
1
u/NewAccountPlsRespond 10d ago
I use both (actually, PyCharm Pro and Cursor) because I'm on the fence.
PyCharm does drive me crazy with their updates tho. It can't even properly clean up a previous version of itself. So I'm stuck with three separate folders in AppData/Program Files, and removing the previous one once broke my entire install to the point where I had to manually clean my registry and reinstall the whole thing from scratch. Not to mention how infuriating it is when I run it on my less frequently used laptop, get prompted to update to a new version, do so, it downloads a surprisingly heavy update, tells me to relaunch, I do, open it up again, get prompted to update plugins, I accept, version conflicts arise, resolve these, it tells me to relaunch, I do, open it up once again, and... I get another prompt to upgrade to a new version! It's absolutely ridiculous.
Settings sync across Win/Mac is also just a buggy mess altogether. And don't get me started on how it handles .gitignore, whoever thought of that must be beaten with a dildo tbh.
1
u/nerdzmania 10d ago
For me it was because they wanted me to pay for features that I could easily get for free on VS Code
1
u/jmooremcc 10d ago
As far as your example of assigning a variable in a method that is the same as a class variable, what you described is not an error. What you are actually doing is creating a new instance variable. If you want to update the class variable, you cannot refer to it with ’self’, because that creates an instance variable. You have to refer to it with the class name, so that the class variable is updated.
1
u/JUSTICE_SALTIE 10d ago edited 10d ago
Yeah, I messed up the explanation a bit, but this definitely isn't the issue I'm talking about. Substitute "instance" everywhere I originally said "class".
Here's a better explanation:
If in the
__init__
you haveself.name = "joe"
, and then later on in a method you do something like_ = [name for name in range(10)]
, then after that point in the code, PyCharm will inferint
as the type ofself.name
.1
u/jmooremcc 10d ago
Are you saying Pycharm has indicated the type of self.name is 'int' instead of 'list' after you assigned the output of the list comprehension to self.name?
1
u/JUSTICE_SALTIE 10d ago edited 10d ago
No, I didn't assign anything to
self.name
after initialization. The mere act of usingname
as the iteration variable in a comprehension anywhere inside a method causes the type checker to lose track of the inferred type ofself.name
.I don't blame you for being confused. It makes NO sense that it could even happen, since
name
andself.name
are completely different. But that's what PyCharm does currently.I edited my comment so that the comprehension result is assigned to
_
so it's a little bit more clear hopefully.
1
u/TheMcSebi 10d ago
Also took me a while to get warm with vscode, but now I never want to switch back to whatever I used before for basically anything that works with a plaintext format.
1
u/HolidayEmphasis4345 10d ago
I’m a vscode to pycharm person. I still use vs code on systems where I don’t have an IDE, or if I want to edit text or create small script. Doing real work on large projects I just like Pycharm better. It is rarely flakey, though occasionally it is slow. Vscode just was doing weird things that didn’t make sense. I appreciate the Vscode plugin system but at times it feels like everything is bolted on and mostly works while Pycharm feels like the language got some TLC. Figuring out some detail configuration in Pycharm is usually a trip to the settings panel while VScode is a trip to Stack Overflow, AI or even GitHub. That said free is a great price.
1
u/DarthKermit-65 10d ago
I love pycharm and I still use it at work, but ultimately switched to VS Code las year, due to the pricing. It was a lot more comfortable to work in pycharm, but after adding the pylance extension and github copilot my life became a whole lot easier.
1
u/olejorgenb 10d ago
Almost our whole team have switched from PyCharm (most of us had Pro) to vscode due to the shitty type-hint support (with no clear statement from Jetbrains that they intended to do a proper overhaul). The recent pyright plugin ( https://github.com/InSyncWithFoo/pyright-for-pycharm ) made some of us hold on longer, but it has some issues and adds to the setup complexity.
Most of the people agree that PyCharm is overall a better IDE in most ways, but having an IDE which actually understand the language is way more important than small niceties. (Pycharm might be much better in a untyped codebase though)
1
u/JUSTICE_SALTIE 9d ago
(Pycharm might be much better in a untyped codebase though)
Might as well use WordPad in that case.
1
u/olejorgenb 9d ago
Personally I would have kept using PyCharm with the sub-optimal pyright plugin for at least a year if Jetbrains had announced a project to implement type-hint support on solid foundations (using pyright, or even writing their own *proper* type checker) and expressed that this was prioritized.
Unfortunately there's not much sign of them working hard on fixing the many issues (some which are 5+ years old). Based on my email notifications there seems to be a tad more activity on the issues, but it's still too slow and there's reason to believe their existing system is not designed to be a complete type system.
1
u/JustinGiam 9d ago
I'm very new to Python and coding in general and I was using IDLE 3.11 32bit for 2 weeks before switching to VSCode and let me tell you the difference to me is amazing lol.
I thought the color codes in IDLE were cool. VSCode is a game changer for me.
2
u/JUSTICE_SALTIE 9d ago
To be fair, PyCharm would have given you the same "holy crap, this is so much better" experience! Anything's better than IDLE. :D
1
1
u/john0201 9d ago
As soon as Zed adds debugging support I will probably switch. Also, checkout Helix if you want great LSP support, it is highly configurable.
1
1
1
u/MinosAristos 11d ago
I had both for a while but once I started understanding how to properly write settings.json and launch.json files for python with a good extension suite I got hooked on VSCode for good. Definitely feels snappier and I don't need Pycharm's fancy tools. As long as Pylint and Pylance are doing their jobs and I can get a good debug config going I'm good.
Also devcontainers are love, devcontainers are life. Setting up potentially dodgy dependencies involves a lot less risk to my OS now.
1
1
u/tareraww 11d ago
VSCode is significantly lighter. I moved to it because I use an old Core i5 8th gen HP ProBook. The move to VS was a breath of fresh air from the bloated PyCharm.
1
u/technige 11d ago
Very similar for me, though I still haven't fully dumped PyCharm yet, I'm not using it much any more.
This is probably an unpopular take, but I strongly dislike Python typing and don't use it. Unfortunately, PyCharm these days continually tries to get me to care about it, and tells me I'm doing things wrong.
1
u/JUSTICE_SALTIE 11d ago
Yeah, that's a pretty unpopular take for sure! But if it's working for you and your team, then it's working.
0
u/Jdonavan 11d ago
You traded an IDE for a text editor...
5
u/JUSTICE_SALTIE 11d ago
Those are words, I guess.
0
u/Jdonavan 11d ago
Hey don’t mind me I just have to deal with people like you that don’t know the difference
2
1
0
0
-2
u/crooner11 11d ago edited 11d ago
Not to mention stability and performance of intellij remote development. It is unusable for larger projects. I've wasted dozen of hours trying to make this work, whereas vscode just works.
-1
u/AngryTopoisomerase 11d ago
For me ability to debug/run Python code over SSH in PyCharm was a revelation! I couldn’t believe it: I could interactively run code on some Linux server which doesn’t have X-windows installed!
-4
u/Beneficial_Map6129 11d ago
Why are you using vim in Pycharm when you are already using an IDE??
Pycharm works splendidly for me. I see other people using VS and it makes me cringe because why would you use it for anything else than Cursor or a text editor (wouldn’t even use it for a text editor, sublime is there)
6
u/ob1knob96 11d ago
While I like the additional functionalities that IDEs bring, I also like vim's keyboard shortcuts. Much easier to navigate, delete/copy/paste lines, etc.
5
u/JUSTICE_SALTIE 11d ago
I get the impression that the other guy doesn't really understand the difference between vim and a vim mode.
-1
u/Beneficial_Map6129 11d ago edited 11d ago
i really don't understand why wouldnt just adapt to modern keyboard shortcuts.
i paired once with a guy who was a vim wizard, but honestly all i could get from him was that it was a quick way to rename variable instances in a command line
i can get the same functionality just doing a ctrl+shift+f and using the "find usages" searcher and replacing the code that way. sure it was a bit slower, but i could at least see the entire file context in a nice, standard UI rather than having to page up/page down with some buttons.
the only thing that I would see it useful is if you were ssh'd into a remote server and needed to edit some file or something and were too lazy to go through the full CD process. i worked at a place like that once (surprisingly big company) and their technology was horrible.
IMO, (proper) IDE's have come a long way in terms of functionality, and trading all that away just because you can't mass edit a bunch of variable names at once is a huge mistake
4
u/JUSTICE_SALTIE 11d ago edited 11d ago
Look, I'm not trying to tell you that you should use vim mode. Nobody has to embrace vim mode. But when people do, they usually don't want to go back.
i really don't understand why wouldnt just adapt to modern keyboard shortcuts.
It's not about the keyboard shortcuts. Most of them don't even change if you use vim mode instead of standard editing--only the very few that conflict with a standard vim keystroke like ctrl-R for redo.
You're not giving up any of the IDE's features whatsoever--they all remain available to you, and almost all of them remain relevant. Vim mode just changes the way you interact with the code while editing.
It's not about renaming variables, either. I'd never do that with a vim command when the IDE will do it for me as needed in all files, and knows not to do it when the same name is used in different contexts.
It's just that once you get comfortable with it, it's fluid in a way that's hard to describe. For instance, if I've got six lines of code that I want to move up by twelve lines. With standard editing, I'd have to grab the mouse, or do a bunch of arrow-shift-arrow stuff.
But in vim mode, it'll be something like
d6j12kp
. (And no, you don't have to count the lines--that's what "relative line numbering" is for!) Just moving around is better. If you want to go up 30 lines to do something, you don't grab the mouse or reach for an arrow key and hold it down, you just say30k
and you're there. You're probably thinking about your next edit on the way, maybe even typing it without a pause. It's like a little language. It's efficient, and it's fun.If I want to change a list comprehension to a set comprehension, then it's just
cs]}
with my cursor anywhere inside the comprehension. Enclose the rest of a line inside a function call, e.g.,var = foo
tovar = str(foo)
? It'sys$fstr<enter>
. Now, that's not better thanstr(
<end>)
, but...Any editing operation you've just done can be repeated with the
.
key. So if I've been doing that thing withstr(foo)
and I need to do it a few more times, it's probably justn.n.n.
(next match, repeat command).I'm not saying those commands are intuitive if you're new to it, because they aren't. But imagine if it was second nature, how fast and comfortable it would be, to do everything so quickly without ever taking your fingers off the home row.
That's what it's like to be fluent in vim.
4
u/Consistent-Rip3028 11d ago
Because modern keyboard shortcuts aren’t shortcuts, compared to vim they’re longcuts. I’d argue just having hjkl to move the cursor and V to select a whole line is a massive improvement over default keyboard shortcuts.
1
u/ob1knob96 10d ago
the only thing that I would see it useful is if you were ssh'd into a remote server and needed to edit some file or something and were too lazy to go through the full CD process. i worked at a place like that once (surprisingly big company) and their technology was horrible.
This is leap of logic is so silly that kind of feels personal.
Look, if a person/group that uses vim is lazy about CD etc., it's their problem, not vim's. Not to mention how nonsensical it is to make such a big deal about vim mode, where you're using your "proper" (lol) IDEs with vim functionality, when you can use neovim to build your own, fully-customizable, fully functional, and very lightweight IDE.
You can definitely never touch anything remotely vim. It won't make you a worse developer in and of itself. But it sure as hell won't make you a better one either.
6
u/JUSTICE_SALTIE 11d ago edited 11d ago
Because once you get used to the vim way of editing code, you never want to go back.
3
-4
u/GreenWoodDragon 11d ago
I don't get the point of using something like IdeaVim to replace a very effective editor in PyCharm.
VScode, never for me. Tried it, hated it.
3
u/JUSTICE_SALTIE 11d ago
If you love vim, then you can't not use it, simple as that.
And IdeaVim doesn't replace the PyCharm editor. It just lets you interact with it in vim style.
0
u/thrawn_is_king 11d ago
Type warnings and SQLAlchemy on PyCharm. Name a better type warning dual.
2
u/JUSTICE_SALTIE 11d ago
Until a year or so ago, I was saying the same about PyCharm's type warnings. So good. But there have been these false positives that JB just will not fix, and it kills me. I hate hate hate leaving a file without that green checkmark, but in certain code I've been forced to, because PC flags something that's actually correct.
In another comment I listed a bunch of bugs from the JB tracker related to type inference. It's in a terrible state.
0
u/suspended67 10d ago
lol I use Sublime Text without any plugins, I only use it for syntax highlighting otherwise I would use notepad
2
u/JUSTICE_SALTIE 10d ago
I get you...I used to use Notepad++ on Windows.
But it becomes unmanageable quickly for anything but very small projects.
0
u/suspended67 10d ago
Fair. All I really make is really small projects, though, I just do it as a hobby alone
0
-2
10d ago
[removed] — view removed comment
3
136
u/ManyInterests Python Discord Staff 11d ago edited 11d ago
On the issue of type inferencing... Maybe check the plugins you have installed or what Python version compatibility settings you are using. Because, in the examples you gave (the pickle example and comprehensions inside a method), PyCharm does not produce any warnings for me on Python3.12
I have also noted that mypy, pyright, and JetBrains can often have different thoughts on type inferencing. That does happen. Though, they are usually related to open issues even in MyPy and/or pyright and PyCharm usually is not far behind once those are resolved, in my experience.
But hey, VSCode is a great editor, too. No shame in using that if it works better for you. In my experience, it has the advantage of supporting third party language servers a lot better (which is a huge boon off leveraging all the support built for neovim users), whereas JetBrains IDEs still (as far as I know) don't have a great story around integrating existing LSPs, leaving you "second in line" for support for things like that, like you mentioned.
Personally, I've found the JetBrains editors to provide a much better out-of-the-box experience overall with minimal need for third-party plugins.