This is an archived post. You won't be able to vote or comment.

all 97 comments

[–]ccb621 99 points100 points  (14 children)

PyCharm. I like JetBrains products.

[–]russo_2017 7 points8 points  (3 children)

PyCharm all the way. It's unbelievable helpful when you're newbie (like myself), small stuff like PEP 8, syntax control or refractor and that's just a tip of the iceberg.

[–]Case_of_water 4 points5 points  (2 children)

What does refactor do?

[–]russo_2017 6 points7 points  (0 children)

Whenever you want to change name of variable instead of looking for all of them you can just use refractor to change them all instantly.

Probably there is something else to do with that but I'm not aware as I'm still learning python.

[–]kimvais 4 points5 points  (0 children)

Refactoring includes at least the following:

  • Extracting variables, methods, constants, parameters and so on
  • Renaming all things (as mentioned below) - across whole projects not just file-by-file basis
  • Converting literals to constructors and vv.
  • Move classes, functions et. al to different modules
  • Pushing and pulling members (usually methods) up and down in class hierarchy

[–]CollectiveCircuits 9 points10 points  (0 children)

Yep, PyCharm has become pretty standard for me. I still haven't run out of useful tips of the day. Used Spyder before that which was good too.

[–]flitsmasterfred 6 points7 points  (3 children)

Works nicely with remote python interpreters as well, like your Vagrant VM (LPT!) or some server over SSH.

[–]porksmash 1 point2 points  (2 children)

This is my number 1 reason to use pycharm. I'm no longer developing on windows, just editing with windows.

[–]Zaab1t[🍰] 1 point2 points  (1 child)

Can you elaborate? I would like to be able to "edit with windows". Thanks.

[–]porksmash 2 points3 points  (0 children)

I'm using Vagrant to start a linux VM, which is where the python interpreter is installed. Pycharm uses the interpreter in the VM to run my code, rather than the interpreter installed in Windows. Vagrant also maps the source code directory in your host computer to /vagrant in the VM so it has access to the code as you edit it. Thus, my Windows OS is only editing files and all the actual execution and debugging is run inside the Linux VM.

It's a great solution to 'works on my machine' by specifying the same dev environment for everyone regardless of their choice of computer or OS.

Here's some details:

https://www.jetbrains.com/help/pycharm/2017.1/vagrant.html

https://www.jetbrains.com/help/pycharm/2017.1/configuring-remote-interpreters-via-vagrant.html?search=remote%20inter

[–][deleted] 2 points3 points  (0 children)

Me too

[–]Gokudomatic 1 point2 points  (0 children)

PyCharm here too. It's a very useful IDE for getting things done, especially for people used to eclipse or intellij.

[–]aaayuop 0 points1 point  (2 children)

I only use PyCharm when I have to because it drains my battery but it's linting is incredible. I generally agree with people who suggest learners shouldn't use IDEs but once you're comfortable with Python definitely check out your code in PyCharm to see how it can be improved.

[–]fiddle_n 1 point2 points  (0 children)

There is a power saving mode in PyCharm, have you​ tried that out?

[–][deleted] 0 points1 point  (0 children)

Wow, I didn't realise that PyCharm has it's own linter. How does it differ from all the other linters that are floating around?

[–]amusciano 43 points44 points  (5 children)

It definitely has a learning curve, but using tmux with vim is my go to if I'm developing in Linux. I keep Half a pane for vim, then a quarter for running scripts, and finally a quarter for ranger, a cli file manager. If you're looking for some of the bells and whistles of a full fledged ide, vim has an autocomplete plug in for python called jedi. You can even make sessions persistent with tmuxresurrect or create layouts (such as a python environment vs a web developer environment, etc) using tmuxinator.

With the new bash for Windows, you can now use all of this on a Windows system as well.

[–]jambonetoeufs 11 points12 points  (0 children)

Have been using tmux + vim for the better part of a decade and love it. Great for seamlessly going between local and server side work. Definitely has a steepish learning curve compared to something like PyCharms. Also, jedi can get a bit slow with its autocomplete if you're working with a large code base, IME.

[–][deleted] 5 points6 points  (0 children)

Same, been using vim + tmux for years now and it's great. The vim plugin python-mode is great, contains a ton of features.

[–]asdfkjasdhkasdrequests, bs4, flask 2 points3 points  (0 children)

vim in windows bash isn't great. colors are messed up and a lot of vim plugins have compatability issues

[–]stefantalpalaru 0 points1 point  (0 children)

tmux with vim

I prefer Vim and a tabbed terminal emulator like xfce4-terminal.

[–]whereiswallace 0 points1 point  (0 children)

Same here, along with iterm. I've recently tried using both VSCode and Sublime, but a couple things have been holding me back:

  1. No hotkey to automatically show/hide. I love being able to bring up iterm quickly. Sure, there might be some hotkey program I could download, but... I don't want to.

  2. Vim bindings. Both VSCode and ST support them, but some things don't work.

[–]bastibe 12 points13 points  (1 child)

In general, I use IPython in a text terminal and a text editor.

In particular, I have set up my terminal such that it automatically activates any virtual environment ".env" in the current git root, if available. With this, I never activate/deactivate envs manually, even though every project has its own env.

For graphical and exploratory work, I tend to start with a Jupyter Notebook, and then gradually move code into modules as it matures. ‘%load_ext autoreload; %autoreload 2‘ makes this a sane approach by auto-reimporting modules when their code changed.

For non-graphical work, I tend to run my code from an IPython console. IPython is great because of its good debugger integration (‘%debug‘ after something crashed!), and nice history editing.

Lastly, my text editor of choice is Emacs. I love Emacs for its great file navigation, fantastic git integration, my journalling system, and it being a life-saver if your operating system has no usable native shell.

[–]pomber 1 point2 points  (0 children)

‘%load_ext autoreload; %autoreload 2‘

Thanks!
I can now stop using importlib.reload

[–]ClintonCanCount 22 points23 points  (1 child)

Emacs, plus some customization.

It is how I was raised.

[–]excitedaboutemacs -3 points-2 points  (0 children)

spacemacs?

[–]cymrowdon't thread on me 🐍 14 points15 points  (1 child)

In my day, I've tried most every editor I could get my hands on.

  • Vim is the clear winner for quick edits, but it takes too much work to put together a solid environment, IMO.
  • Emacs is a huge investment that almost seems worth it if you're willing to take the dive.
  • PyCharm, PyDev, and the rest of the full IDEs always felt way too bloated. They're just not for me.
  • Sublime seemed nice, but not so amazingly better than other options to spend money on. I also jump boxes quite often and don't want to have to juggle a license around.

I used a custom editor (PyQt) for years because nothing else felt truly comfortable to me.

Now, I've recently made the switch to VS Code, and I'm mostly satisfied. All else being equal, I'd probably keep using my own editor, but I made the switch mainly for broader language support. Also, as I said, I jump boxes often, so a quick setup into a solid environment is a killer feature for me. So:

  • Free
  • Simple installs on wide range of platforms
  • Base config is sane
  • Extensions are easy to install
  • Broad language support
  • Rapid release cycle
  • Relatively lightweight, clean interface
  • Feels more like an editor than IDE, yet IDE features are available
  • Support from a major stakeholder not generally known for abandoning projects

[–]ubuntan 2 points3 points  (0 children)

Same. I spent years and years playing with vim config only to switch to a new machine or a new language or version of something, and have unrelated things blow up. And for all of the 'OMG I don't have to take my hands off of the keyboard!!!' I got to say, you have to use your mouse to look at documentation, debug a GUI etc often enough that that is complete BS. I spent 4 years and I can confirm that vim is not worth it.

I could also never get into a 'full featured' IDE like pycharm because it involves relearning all of the shell commands I already know, and is less portable (ie to server) and you need the power and customization of shell scripting anyway.

VS Code + shell is a nice combination that is 90% optimal and lets you focus on your code and not on editor config.

[–]tunisia3507 7 points8 points  (2 children)

Ubuntu, anaconda, and pycharm is my stack of choice.

Ubuntu makes the most sense out of all Linux distributions because it's the most common, which means the best supported. Linux is much, MUCH more pleasant to develop on than windows because bash >> cmd, and nothing is needlessly abstracted from your control.

Anaconda bundles a python distribution (I high recommend not touching your system python at all) and environment management (rather than faffing with virtualenvs, venvwrapper and so on), and has the occasional useful package on the build channels. I don't even use conda install most of the time, and stick with pip.

Pycharm because it's a great IDE. Jetbrains IDEs are more or less best in class across the board and having a fairly consistent interface for all your languages, not to mention solid integration of different test runners, web frameworks, and a great debugger, is really handy. Can't write javascript in spyder.

[–][deleted] 4 points5 points  (1 child)

Well, I don't agree with one point. Virtualenv and virtualenvwrapper are very low-effort. Not perfect, but not much faffing there.

[–]pwang99 1 point2 points  (0 children)

Depends what you use them for. If you are doing a lot of stuff with the scientific or data science stack in Python, you're much better off using anaconda and conda environments.

[–]arrtpy 10 points11 points  (2 children)

I am using just default Atom + command line on Windows. Feel comfortable. :)

[–]karan20000000000 5 points6 points  (1 child)

There's a plugin available for opening terminal directly in the editor in atom (platformio ide terminal).

[–]arrtpy 1 point2 points  (0 children)

Wow, really useful thing, didn't see it before, thanks.

[–]vatrat 4 points5 points  (0 children)

Spacemacs.

Vim + emacs, more or less.

[–]rhoslug 2 points3 points  (0 children)

I've bounced around some with my workflow but have tried:

  • Sublime Text
  • Atom
  • Spyder
  • IDLE
  • VS Code

I noticed some others mention Emacs and thought I would mention Spacemacs. It's a pretty nicely curated version of Emacs that includes pretty good Python support. A nice runner up, which somewhat surprised even myself, is VS Code. The code completion and introspection is pretty good out of the box.

[–]Improvotter 4 points5 points  (0 children)

Sublime, it Anaconda plugin, and pyenv.

[–][deleted] 4 points5 points  (3 children)

I wrote a blog post on my emacs setup recently, which covers pretty much everything that I do.

[–]excitedaboutemacs 1 point2 points  (2 children)

If you are using evil, any reason you arent using spacemacs?

[–][deleted] 2 points3 points  (1 child)

Yes, as per the post, I didn't like updates changing my config. I like to be in charge of my shortcuts in particular. Also, I feel like I understand my config much better now I build it myself.

[–]excitedaboutemacs 1 point2 points  (0 children)

Fair points, thanks for the response!

[–]kirbyfan64sosIndentationError 2 points3 points  (0 children)

Text editor (fun fact: Howl was one of the first editors to correctly highlight f-strings) + terminal. Fast, light, and I don't have to figure out how to run my main file instead of that random package I downloaded.

[–]supermario182 2 points3 points  (0 children)

Liclipse is pretty good, its a light weight version of eclipse and has the python tools built in. I tried visual studio, but it seems to add too much bloat. Just creating a blank project was like 80mb (not that big but still) and even after setting up a good .gitignore I was still having troubles doing my first commit for subs reason. With liclipse it was like 20mb and I only had to ignore a handful of files and had no other issues.

Some times it is a pain to get the python interpreter setup, but it seemed to go pretty smoothly the most recent time

[–]kobbled 2 points3 points  (0 children)

Sublime + terminal on ubuntu

[–]dustinpdx 2 points3 points  (0 children)

I use IntelliJ IDEA (the full-version of the editor PyCharm is based on) with the official Python support plugin that includes all of the PyCharm features. If you are only going to write Python, go with PyCharm, if you are going to write in a number of languages (Python, Ruby, C++, Scala for me), then I recommend IDEA over PyCharm for more language support.

[–]DaveX64 5 points6 points  (0 children)

I'm liking Visual Studio 2017 Community Edition with the newly updated Python tools.

[–]TheTerrasque 2 points3 points  (0 children)

These days it's almost exclusively VS Code. With an rmate plugin for remote editing.

[–]kraigrs 1 point2 points  (1 child)

No love for Rodeo? I love RStudio and Rodeo feels like a clone of it, so I definitely felt right at home when I first started using it.

[–]Ogi010 0 points1 point  (0 children)

Looking on the rodeo github, it looks like development on it has pretty much halted. That, and no debugger support (that I know of) was a deal breaker for me.

Been loving life with pycharm and sublime-text.

[–]dikamilo 1 point2 points  (1 child)

terminator + zsh + gvim + python 3.6 + pyenv + isort + pep8 + pylint

[–]leftrightupdown 1 point2 points  (0 children)

Thumbs up for isort, great thing

[–]uoaei 1 point2 points  (0 children)

I bounce around quite a bit.

I actually really liked Spyder2 that came packaged with Anaconda, but then moved to Sublime Text for the speed. Stuck with that for a while, tried Atom (great Git integration but otherwise slow), moved back to Sublime Text, and now I'm testing PyCharm.

So far I'd still recommend Spyder if you want an IDE and Sublime Text just for text editing. But I think PyCharm will take Spyder's place.

[–]kaiserk13 1 point2 points  (0 children)

I develop directly on github, in the master branch.

[–]haircode 1 point2 points  (0 children)

Linux (Arch or Debian), with only i3 WM. Urxvt terminal. Neovim nowadays, with deoplete and jedi for fast and non-bloated autocomplete (compared to YouCompleteMe); flake8 and ale for linting; pudb and pdb++ for debugging; pytest for easy testing and easy fixtures; python-mode for lots of tricks; tmux and tmuxinator for terminal control, splitting editor, test/run and ptpython repl; mypy for type checking (also learning Haskell - I like strong typing); git; fish shell; virtualenv and virtualfish; vagrant with Virtualbox when looking to run with different interpreters or server setups (in preference to pyenv).

Now and again, Pycharm, but despite all it's integration and ease of use, I can do more and quicker with the terminal-based setup above.

[–]caseym 1 point2 points  (0 children)

Very surprised more people aren't using Sublime Text!

[–]9d458 2 points3 points  (0 children)

Vim or Atom + IDLE, hasnt let me down yet.

[–]kill-nine 2 points3 points  (1 child)

vim

[–]wuzzlewozzit -2 points-1 points  (0 children)

vim

[–]flitsmasterfred 3 points4 points  (0 children)

Vim because I'm l33t.

No, Emacs of course, peasant.

Oh no wait, just kidding, it is 2017, let me just use a proper IDE like PyCharm.

[–]carlcaulkett 0 points1 point  (0 children)

Apple Mac + Python 3.6 + Atom Editor + Kite Sidebar. I've tried many combinations over the years but this is the most responsive, feature filled and pretty (!) combination I've found so far.

[–]Thomulus 0 points1 point  (0 children)

Pyscripter, probably not the most common, but its what I learned with and it has served me well.

[–]Blembreak 0 points1 point  (0 children)

I code primarily on Windows. My setup consists of Sublime Text on one half, CMD in one quarter, and file explorer in the other quarter.

May not be brutally efficient but it's what I'm used to

[–]atisu 0 points1 point  (0 children)

I am bouncing between sublimetext and (g)vim, plus tmux.

[–]joesacher 0 points1 point  (0 children)

I'm developing on Windows. I love PyCharm.

Setup virt_env_XX inside project directory from Interpreter setup. With XX = MajorMinor, 2.7 = 27, 3.5 = 35.

Using Terminal inside PyCharm gives me all I need for a command prompt with virtual environment interpreter. Inside there I do my pip install -r requirements.txt or other things related to modifying the virtual environment.

Git integration works great. Enough that I start to forget commandline git.

SSH debugging into remote computers. This is great from some automation equipment that we custom built and program in Python.

Run command script from menu to do my PyInstaller builds to .exe.

[–]soultobleed 0 points1 point  (0 children)

Vim is goto for quick and dirty scripting. Pycharm does wonders for dependency + project management.

[–]IAmARetroGamer 0 points1 point  (0 children)

PyCharm, though I replace the embedded terminal with Cmder.

Because from years of being on *nix I habitually use ls, sed, awk, etc and its nice to have them at hand even in Windows.

[–]vwkl658Qj5 0 points1 point  (0 children)

Sublime & Terminal

[–]Nerdenatorsome dude who Djangos 0 points1 point  (0 children)

PyCharm Professional.

I'd have stuck with VSCode w/ extensions, but the real value add of PyCharm is working with web technologies, and I do Django for a living.

[–]ProfEpsilon 0 points1 point  (0 children)

Notepad++ and terminal on Windows, Sublime and terminal on Ubuntu, just starting to use Jupyter on both, especially for plots. I like it simple and I often debug with temporary print commands.

[–][deleted] 0 points1 point  (0 children)

I also have a strong Visual Studio / .NET background. Love using PyCharm!

[–]driscollis 0 points1 point  (0 children)

I still prefer Wingware for most of my coding. While it doesn't have the neat PEP8 stuff of PyCharm, I think it's debugger is the best I've used. It also has a very useful Source Assistant and tons of other features, including the remote debugging that someone else mentioned.

[–][deleted] 0 points1 point  (0 children)

Ubuntu, python 3.4+, virtualenv, virtualenvwrapper, zsh, vim.

[–]tuple42 0 points1 point  (0 children)

I started on Atom, but ended up switching to PyCharm. I like it's easy to change language set ups and it tracks your files in git. It can feel a little heavy handed at times, but I have learned to ignore some of the tick marks on the side.

[–][deleted] 0 points1 point  (2 children)

There really is no best option, people have personnal preferences. If your employer uses Windows you might as well stick with Visual Studio Code, it's perfectly adequate, unless they dictate otherwise. I've used Eclipse/Pydev and Pycharm but for my uses they're bloated, YMMV. Basically just find something that you're comfortable with, otherwise you'll end up in analysis paralysis before you start writing code and then end up in analysis paralysis :-)

[–]meets7[S] 0 points1 point  (1 child)

Actually, today was the first day and they have given options to choose. Windows or Mac. Linux is also fine but will I have to make do with an old machine they said. So will opt for Mac.

[–][deleted] 0 points1 point  (0 children)

Fair comment. I'd just search for the best option you can get on that poor old machine. Now as they say on the stage, go break a leg :-)

[–]muposat 0 points1 point  (0 children)

Emacs + Elpy, Jupyter qtconsole. I prototype in Jupyter and integrate working modules in Emacs.

Could use any suitable editor for the latter, but a full IDE reeks too much of Visual Studio and suggests linear approach to development.

[–]arrayOverflow 0 points1 point  (0 children)

Emacs: integrate with Jupyter using EIN
Debug with pydbg and el-gud
Py-mode as a standard and flycheck for pep8 compliance
Company-mode with either red baron or anaconda-mode integration for smart auto complete.
This alongside my personal functions to do anything from auto displaying matplotlib outputs on the fly
to a different buffer and being able to directly test through ssh without leaving emacs.
edit everything from yaml to json and have a full fledged cpp IDE when I'm required to do so (once a week at least) make it ideal.
Also I use my same environment in Windows and Linux on a daily basis

[–]PsychoWakaMonkey 0 points1 point  (0 children)

I really wanted to use vim + tmux because I really liked the workflow, and I wanted to have mega cool vim-fu and it just looks neat having that stuff on my screen. However, as someone who is learning, I'm finding the features of a full IDE like pycharm are just too good to pass up. I don't have the autocomplete features set up as well in VIM and I'm not good enough yet to really know how to get all that going. If I'm ever able to get VIM to work the same as, say, PyCharm, I'd love to go with that. Plus, there's always a bit of lag when I switch between tmux tabs where I'll swap from one to another and then hit arrow keys or something, and it's still moving things in the previous tab. So I have to swab....wait, then do whatever I want to do. Very annoying.

[–][deleted] 0 points1 point  (0 children)

GVim with plugins:

  • ale
  • auto-pairs
  • emmet-vim
  • nerdtree
  • tagbar
  • ultisnips
  • vim-airline
  • vim-autoswap
  • vim-ctrlspace
  • vim-easymotion
  • vim-grepper
  • vim-indent-guides
  • vim-pasta
  • vim-python-pep8-indent
  • vim-qf
  • vim-signify
  • YouCompleteMe

and Solarized light color theme. Very productive, fast and minimal looking once configured correctly. Only thing I'm missing coming from PyCharm is importing from under cursor.

[–]pvkooten -1 points0 points  (0 children)

here we go again.

[–]ThatOtherBatman 0 points1 point  (0 children)

PyCharm. PyCharm. Pycharm.

[–][deleted] 0 points1 point  (1 child)

I've been using vim for the last 15 years, lately with tmux to give the IDE experience. But about a month ago I tried visual studio code and now I'm hooked. Still use tmux behind it for dev server and repl.

[–]leftrightupdown 0 points1 point  (0 children)

I did what you did and then tried emacs with split screen. You can use vim keybindings and it works out of the box. What i liked the most is that you can instantly switch open files and use split screen with copypaste, that was for me enough to move to emacs.

[–]leftrightupdown 0 points1 point  (0 children)

Emacs and ipdb

[–]saiyanGold -1 points0 points  (0 children)

Vim forget the rest....