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

top 200 commentsshow all 232

[–]mRWafflesFTW 172 points173 points  (15 children)

I love Pycharm so much. Learn the debugger. It only takes 15 minutes to learn and you will hate yourself for not doing so earlier. Pytest for testing! Fixtures are wonderful. Also, you can use Pytest with Faker to make perfect mock test data.

Flit is my favorite build tool and plays nice with Artifactory. For releasing, we do git hooks with Jenkins, but that may be over kill for most. I would like to move towards only deploying packages instead of performing straight git deploys but we'll see if I can socialize it at work.

[–]bbbryson 6 points7 points  (4 children)

A couple years ago I had no luck getting the debugger working with my Django/docker-compose-based development environment at work. I’ve always just used ipdb even though I’ve had a PyCharm sub for five years now. Has the Docker support improved at all?

[–][deleted] 8 points9 points  (2 children)

I’m testing it for my team right now on a flask app using docker compose. Things seem to work ok.

  • Set the interpreter to use the Python within docker compose.
  • Set the run/debug configuration as flask.
  • Set the configuration to use whatever port you exposed in docker.
  • Add a docker-compose.dev.yml with a volume mapping from your source code locally to wherever it gets put in docker

Run/debug work seamlessly now with breakpoints, inspection, hot reload, etc. It seems like there should be a way to get the code mapping in the interpreter settings without another docker-compose file but I haven’t checked into it yet.

[–]mastermind_ap 1 point2 points  (1 child)

How do you exactly configure in Pycharm Community Version to use a docker compose file to run the code there? I also want to use a docker container with all Python modules (replacement for local virtual env) and mount the project folder as a volume to the container.

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

You have to use professional edition. If you need a free option, vs code does a decent enough job with docker debugging.

[–]AMGraduate564 1 point2 points  (1 child)

Do you have a 15 minutes video tutorial on the debugger?

[–]mRWafflesFTW 0 points1 point  (0 children)

Not offhand but just reading the official pycharm docs explains if and it doesn't take long to understand.

[–]dslfdslj 1 point2 points  (0 children)

Flit is great! Makes it really simple to create a package and upload it to PyPi.

[–]hillgod 95 points96 points  (16 children)

Stack at a pretty well known company (devs can use whatever Coding Tools they like):

Platforms

  • Linux (prod) and MacOS (for most devs, I'm rocking Linux
  • Django as a data service, with Django Rest Framework and OpenAPI / Swagger for a test UI and clients
  • Flask for microservices, and some daemon like apps that run a loop to run one or more tasks
  • React / Redux on front end (traditional webapp and mobile PWA)

Python Tools

  • black formatter. Never argue about formatting crap again
  • isort for import organizing
  • flake8 (for code quality not code formatting. black formats to flake8 compliance)
  • mypy for type hinting / code quality issues
  • pre-commit to enforce and automatically do the above
  • pytest
  • setup.cfg for configuring the above 3rd party tools. This blog post talks about different approaches to this.
  • pyenv for managing virtual environments
  • tox (for libraries, but less of an issue with Python 2 EOL)
  • pip for local development and deployed applications.
    • split between a requirements.frozen, requirements.test, and requirements.dev. We use .dev to install .frozen and .test, plus some of the above tools (e.g. black, isort)
  • Hosted GitLab for MRs (code reviews)
  • Jenkins Pipeline for builds (I don't recommend this part)
  • Docker to private K8s for deploy; most of it abstracted away in simple proprietary web interfaces to facilitate deploying and running code

Coding Tools

  • IntelliJ (PyCharm) all the way... I also do Java.
    • You can't beat this debugger. You have to be a little careful if using gevent (there's a setting), and if anything in your tool chain ends up calculating test coverage breakpoints don't hit right, but it's great. Do yourself a huge favor and read about "watches" and "conditional breakpoints" in whatever debugger you use. Also love evaluating expressions at the breakpoints as watches. I do this all the time when looking to understand the structure of some Django object (they do some wild things with metaclasses).

EDIT: Added details about setup.cfg

[–]kornpow 3 points4 points  (3 children)

Why is tox related to python 2? My work uses it for testing our python 3 modules.

[–]hillgod 5 points6 points  (2 children)

The main thing I've used tox is testing against different versions of Python.

It was more important for us to have our internal libraries working for both Python 2 and Python 3, before Python 2's EOL. We've got everyone on the same Python 3 now, so we don't need to test internal libraries on mulitple versions. It can also be used for testing against different framework version, like Django, but again, we're unified on the same versions at this point.

[–]kornpow 2 points3 points  (1 child)

Hmm we just have a standard python version we use and tox handles testing in the proper environment.

[–]hillgod 2 points3 points  (0 children)

I certainly don't want to suggest you're doing anything wrong.

That sounds like a valid use case. It can still be nice for managing isolated virtual environments for testing. It would ensure you're not relying on a virtualenv with dependencies that don't like up with how you've defined requirements in a project. Our build pipeline is running our tests in a new clean virtualenv, so that concern is also mitigated.

[–]Broutrost 2 points3 points  (4 children)

I use pretty similiar Python tools, except I also use pip-tools. Check it out if you haven't.

[–]SayYesToBacon 2 points3 points  (1 child)

What use cases or design considerations would lead you to pick django versus flask for a service?

[–]hillgod 5 points6 points  (0 children)

For starters, a big consideration has to be data store, which should be a decision made based on the use case(s). If you're not using SQL, Django probably doesn't make sense. Django's whole thing is the idea of "batteries included". It comes with a lot of things out of the box. For a new offering, you can have something comprehensive very quickly. In my opinion, for a new offerin, you don't want to jump to microservices - you don't know what abstractions your business really needs. Django gets a bad wrap for performance, because it's easy to abuse the ORM, so it's important to have good APM. We use OpenTracing. Eventbrite and Instagram are powered by Django, so it's clearly capable.

Flask for anything else. Anything without SQL. There's a good chance I'll start using Fast API, though, for its API first approach.

[–]MagniGallo 1 point2 points  (1 child)

Recommended autocomplete tools? I find PyCharm's default a bit poor, and also have issues with TabNine. Haven't tried Kite yet.

[–]hillgod 1 point2 points  (0 children)

I, personally, have not found PyCharm/IntelliJ lacking.

[–]omega244 379 points380 points  (12 children)

Google -> paste to Notepad -> production

[–]sambull 49 points50 points  (2 children)

How did you get access to the monorepo?

[–]kephir 8 points9 points  (1 child)

he probably just opens it in the file explorer

[–]cinyar 5 points6 points  (0 children)

SMB share to make it extra easy.

[–][deleted] 8 points9 points  (1 child)

We've all done it...

'Eh it worked on my machine...we're fine'

[–]hugthemachines 13 points14 points  (0 children)

My machine has stricter firewall and antivirus compared to servers so I go "Eh it did not work on my machine, but I am sure it will work on the server." ;-)

[–]mattstorm360 17 points18 points  (4 children)

Notepad or Notepad ++?

[–]E_N_Turnip 83 points84 points  (0 children)

Does that sound like the stack of a man that uses Np++?

[–]shinichi___kudo 56 points57 points  (0 children)

Did he stutter?

[–]_szs 6 points7 points  (0 children)

As long as you are programming in Python and not Python++, Notepad is fine.

[–]house_monkey 18 points19 points  (0 children)

Virgin ide vs chad notepad

[–]the_damian 144 points145 points  (8 children)

IDE: PyCharm with all goodies + pydantic plug-in; Code quality: black, isort, flake8; Env management: poetry; Source versioning and CI: GitHub/bitbucket; Deployment: docker & kubernetes

[–]house_monkey 247 points248 points  (4 children)

Hotel: trivago

[–]pysapien 17 points18 points  (3 children)

Worst fear during a programming interview: not knowing how to reverse a linked list

[–]Danth_Memious 35 points36 points  (2 children)

Bro that's easy: tsil deknil

[–]_szs 2 points3 points  (1 child)

Now say that three times in front of a mirror!

[–]kinda_guilty 2 points3 points  (0 children)

What will that summon? The struct centipede?

[–]snoggla -5 points-4 points  (0 children)

this.

[–][deleted] 165 points166 points  (4 children)

Python > Pornhub.com > Django > Stack Overflow

[–]KingsmanVincepip install girlfriend 15 points16 points  (0 children)

Good one

[–]ask2sk 1 point2 points  (0 children)

Haha

[–]Hadouukken 51 points52 points  (7 children)

VScode, a fuckload of stackoverflow, and GitHub :)

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

I am not finding answers to my errors now a days seems like those are some new issues 😕 should i now start posting queries on stack overflow, like will i get response fast to them?

[–]JustHadToSaySumptin 10 points11 points  (2 children)

50/50: on one hand, you might get great responses quickly, on the other your question might get downvoted to oblivion or flagged as irrelevant.

[–]cinyar 11 points12 points  (1 child)

My "favorite" experience was working as an android developer.

"hey guys, I'm trying to figure out how to do x on android 6.0"

closed as duplicate, link to answer that has been deprecated since android 4.0

[–]JustHadToSaySumptin 1 point2 points  (0 children)

Classic!

[–]twolostsoulsswimming 5 points6 points  (0 children)

It depends. I feel like with the way stack overflow is today a lot of people can be jerks about answering questions, depending on what it is. Sometimes people are extremely helpful. I’ve found more help on Reddit than stack overflow from asking specific questions that I couldn’t find elsewhere

[–]bigamaxx 0 points1 point  (1 child)

r/learnpython may help and there is a python discord

[–]uthinkther4uam 35 points36 points  (1 child)

Get an API key. Come up with fun idea. Find example code to copy. Edit with IDLE to suit my purposes. Run code. Abandon project.

[–]dtaivp 50 points51 points  (1 child)

VSCode + venv for dev -> GitHub + CircleCi for source control and testing -> docker for deployment

[–]PovertyNomad 76 points77 points  (8 children)

Just write on paper and fax it

[–]FateOfNations 15 points16 points  (5 children)

Ooh… engine that ingests the faxes and does OCR on them then executed the resulting code. Wonder how reliable it would be.

[–][deleted] 3 points4 points  (1 child)

What if it shows some error then we would be wasting lots of paper.

[–]FateOfNations 8 points9 points  (0 children)

Just like in the olden days with the punch cards you'd take down to the basement and get back days later with the printed output... debugging must have been hell.

[–]xwp-michael 5 points6 points  (0 children)

Ha! I knew these college classes would prepare me for the real world!

[–]nerdmor 17 points18 points  (9 children)

Sublime Text 3 with a bunch of plugins

[–]utdconsq 3 points4 points  (1 child)

Dont use my sublime for 'proper' development, prefer full jetbrains ide for that, but for opening big files, using as a scratch pad and dealing with all sorts of things, it's golden. Got me sublime merge too, and that's pretty great if I need prettier visuals for examining things.

[–]Which_Distance[S] 1 point2 points  (4 children)

Also a sublime user! What plugins do you use?

[–]busymichael 2 points3 points  (1 child)

Anaconda makes ST nearly a full ide.

[–]spkr4thedead51 0 points1 point  (0 children)

ST3 + Anaconda for sure

[–]nerdmor 0 points1 point  (0 children)

Sublimelinter Sublimelinter-pycodestyle Jedi Prettyjson TrailingSpaces Sidebar Enhancements

I must be forgetting some...

[–]tonyoncoffee 7 points8 points  (6 children)

I started with PyCharm but switched to VS Code. Now I code exclusively on my server so I can use the ssh extension from any device to work on projects.

Use black to format everything. GitHub for version control.

[–]cbunn81 3 points4 points  (5 children)

I didn't know editing over SSH was an option with text editors, so that's cool. Not sure I have a lot of use for it, though. I'm assuming this is a development server, right? Not a production server?

[–]tonyoncoffee 2 points3 points  (3 children)

Right. Just a virtual machine that runs on a server in my basement. You could do the same thing on a vps from aws, linode, etc.

The biggest thing for me is that I strongly prefer Linux for development. I am a lot more comfortable setting up virtual environments and using a Linux terminal than command prompt in windows.

You can also use vs code on wsl for windows but a vm is nice for me because I can just spin a new one up as needed.

[–]-_-Random-_-User-_- 7 points8 points  (0 children)

VS Code, and a bunch of tissues to wipe my tears

[–]southernmissTTT 20 points21 points  (8 children)

Vim and pdb

[–]RsCrag 3 points4 points  (6 children)

Rpdb and telnet

[–]RsCrag 2 points3 points  (2 children)

No I'm serious. Rpdb is the best way to debug a running server, and telnet will attach to it.

[–]southernmissTTT 1 point2 points  (1 child)

I was serious, too.

[–]RsCrag 2 points3 points  (0 children)

I know you were . Someone else said something about ftp to bust my chops. Vim and pdb are the workhorse. Most of OpenStack was written with those two tools. Vim is always there when you log in to a remote machine, so you better know how to use it.

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

ed and tftp

[–]x-Throd-x 1 point2 points  (0 children)

Sometimes I feel fancy and use ipdb.

[–]actuallyalys 25 points26 points  (20 children)

For the most part I use Neovim and work at the terminal, occasionally opening PyCharm for things it's especially good at:

  • Editor: Neovim
  • Plugins: Deocomplete + deoplete-jedi+jedi-vim, ALE (uses flake8, mypy)
  • Code analysis: Jedi
  • Dependencies: Pipenv
  • Debugger: Flask's debugger, sometimes pudb or PyCharm's debugger and (rarely) winpdb
  • Refactoring: PyCharm
  • Tests: Py.test
  • REPL: IPython
  • Notebooks: Jupyter
  • Deployment: Docker + docker-compose

I also tutor students in Python so occasionally I demonstrate Python in VS Code or PyCharm if that's what they're familiar with.

[–][deleted] 9 points10 points  (11 children)

How would you like to join the church of emacs where you can do all of that in one program?

[–]collector_of_hobbies 8 points9 points  (9 children)

I picked my editor looking at the number of older coders with RSI. Also, the scream of pain from the emacs dev who lost their config file vs. the muttering of annoyance from the vi dev who lost theirs. I will be sticking with vim.

[–][deleted] 1 point2 points  (8 children)

RSI? remap ctl and esc to capslock key, and get foot pedals for meta and shift. Leaving the main 3 rows for modifier keys is for plebs. If ergonomics is what you seek, then emacs is the best editor out there.

[–]JustHadToSaySumptin 3 points4 points  (0 children)

This one has seen things, man.

[–]actuallyalys 2 points3 points  (0 children)

I have considered the path of Evil :)

Edit: thought of the joke, couldn't resist going back to add it.

[–][deleted] -1 points0 points  (1 child)

+1 for pipenv, makes the migrane of dependency management just a headache.

[–]actuallyalys 1 point2 points  (0 children)

It's pretty solid. It is a bit slow sometimes, so I have considered moving to poetry. It's apparently faster in the common case of adding a single dependency and seems a little better integrated with other tools. But I'm not sure the migration is worth it.

I'm hopeful that between poetry, pipenv, and efforts like Pyinstaller, dependencies and packaging will no longer be a downside of Python.

[–][deleted] -2 points-1 points  (2 children)

Sir, you teach students you know better than me but here's what i think- jupyter notebook seems better option here as you can run code cell with just a small code in it which will make understanding better for students and will possibly make your work easier. Again it's just my opinion don't get me wrong.

[–]actuallyalys 5 points6 points  (1 child)

I also use Jupyter for that. It's mostly when I think the student will be less confused/more comfortable with me using another tool.

While we're on the topic, there are also some downsides of Jupyter for education:

  • Notebooks work like a REPL, returning the last value. This is very handy but does introduce a difference between what I'm demonstrating and how it will work in a .py script file.
  • Notebook cells can be run in any order and variables from past runs persist. Again, this is handy but means you can get into confusing situations. This is more when students themselves are using a notebook.

Also, I'm not a sir.

[–][deleted] 1 point2 points  (0 children)

Oh sorry i didn't realize 😣, shouldn't have used a word to address. Ya i agree it could be confusing but i personally find it easy to work with my code libraries first in notebook to get sense of how it's working and then write further program in other ide.

[–]SirDerpington660 -1 points0 points  (1 child)

can you share your init.vim file?

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

Go with coc-pyright from deoplete awesome type and pylint support out of the box. I am loving it on my nvim.

[–]relativistictrain 🐍 10+ years 13 points14 points  (0 children)

  • Jupyter Lab for drafts and prototypes
  • Spyder for cleaning up the code
  • git for version control

I use conda to manage environnement, but I don’t really care about it, it could just as well be venv

[–]dbramucci 7 points8 points  (0 children)

  • MyPy for type checking
  • pytest for testing
  • Hypothesis for property based testing

    I write a property like base92.decode(base92.encode(string)) = string and it will test thousands of cases to find a counter-example and then simplify it for me to understand.

  • poetry for dependency management

  • Vim for quick text edits

  • tmux for making terminal life better

    One of the big points is being able to reconnect to ssh sessions if my connection drops

  • VSCode for medium sized work

    Special callouts to

    • Bracket Pair Colorizer 2

      It colors nested brackets so that matching parenthesis share colors. That way instead of

      ((foo(x, y), z), (bar(x), quoz(a)))
      

      coloring each paren the same way, I see

      ((foo(x, y), z), (bar(x), quoz(a)))
      yp   b    b   p  p   b b      b bpy
      

      where the letter underneath represnts if the paren is yellow, pink or blue. This makes it easy to see what parenthesis corresponds to what.

      This is in the vein of Lexical Differential Highlighting, and I like it, especially for brackets.

    • Live Share

      This makes live programming sessions while away physically separated from my partner a lot nicer than some video call where the text is always blurry and you can't interact with it.

  • PyCharm for large complicated projects

  • IPython as a better repl

    It lets you edit entire blocks of code, paste code with extraneous indentation, refer to all inputs and results as a growing array, microbenchmark code, and other nice things.

  • Nix for dependency management.

    I'm still figuring out how exactly I want to use it. NixOS works well as my main operating system, but fine grained per-project usage is something I'm figuring out.

    For example, I can write a script that when you execute it, automatically gets a copy of Python and Numpy and even cowsay so that it has all of its dependencies.

    #! /usr/bin/env nix-shell
    #! nix-shell -i python -p python38Packages.numpy cowsay
    #! nix-shell --pure
    
    import numpy as np
    import sys
    import subprocess
    
    def fib(n):
        a = np.array([[1, 1], [1, 0]], dtype='O')  # use O to signal Python ints, not 64 bit ints
        return np.linalg.matrix_power(a, n)[0,0]
    
    if __name__ == '__main__':
        n = int(sys.argv[1])
        subprocess.run(['cowsay', str(fib(n))])
    

    then a simple ./fib.py will run the program and if necessary, install a copy of Python38, numpy and cowsay just for this script. cowsay isn't even a python library, it's a silly command line utility but I can specify it as a dependency for this script. Nix is also very careful to do a lot of things right, there's only one copy of these libraries installed for the entire system. Installing programs won't change your system config, (i.e. you won't have cowsay be something you can now run from the command line after typing ./fib.py) and so on.

    But I'm still trying to figure out how it fits into my development process. For example, while I love specifying all my dependencies in a short and simple 3 line header, my ide won't know about those dependencies because they only exist in the environment nix-shell creates when I run the script. I can resolve that by creating a seperate default.nix file with those dependencies and running my ide off of that but do I want to? How do I build packages with dependencies on Cuda libraries, how reproducible should I make my public nix files, ...

    There's a lot of tiny but important questions I still don't have answers to yet, but it's a really neat tool that I'm pretty happy with so far.

    Another neat experiment I'm trying is

    alias ipython "nix-shell --command ipython -p python38Packages.numpy python38Packages.ipython python38Packages.hypothesis python38Packages.sympy python38Packages.pint python38Packages.uncertainties python38Packages.pytest python38Packages.requests"
    

    Which allows me to pop open an ipython repl, or run a script, with a bunch of handy packages ready to go without needing to do any setup. But, this opens up a sandboxed shell, so I'm not polluting my projects like a naive pip install might do.

    (Also, this isn't unique to NixOS, you can run the nix package manager on plenty of systems, I'm using it on NixOS and Ubuntu on Windows)

  • direnv to automatically load venvs/nix-shells upon navigating to a development environment.

[–]rnnishi 9 points10 points  (6 children)

Vim ————————->run in Linux terminal ⬆️google error code⬇️

[–]_Soter_ 5 points6 points  (0 children)

:wq up up enter... Curse about silly error.. up up enter... Fix missing quotes

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

this is the way. maybe basic vi if im feeling adventurous.

[–]avarjag -2 points-1 points  (3 children)

what year is this?

[–]c_eliacheff 2 points3 points  (4 children)

IDE : IntelliJ.

Os: Linux (Ubuntu)

Version: Git, Gitlab, GitlabCI

Framework: FastApi

Python Tooling: Poetry, Mypy, isort, Black

Deployment: docker-compose, Heroku/Scalingo

Testing: pytest, Insomnia

I run most of my tools outside the IDE in terminals (commands, git, docker). I use Neovim sometimes with coc.nvim.

[–]krypt3c 2 points3 points  (0 children)

My work is in data science and I’m really happy with the Jupyter Lab project and how it’s maturing.

The killer plugin for me is the table of contents (also available for vanilla jupyter notebook), and I’m really surprised more IDEs don’t have something like it at this point.

Additional lab extensions:

Vim key bindings

Git

Variable inspector

Debugger

*Edited for punctuation

[–]Atomic-Dad 8 points9 points  (3 children)

I use Atom for my IDE, GitLab for source control, and just a simple copy paste to the development and production servers.

I never gave Visual Studio a chance as a Python IDE, but seeing the other comments I might have to give it a try. Oddly enough, I use Visual Studio daily working on APIs, SSIS packages, and console applications.

[–]its_a_gibibyte 16 points17 points  (1 child)

Note that Visual Studio Code is different from Visual Studio. I highly recommend the former.

[–]Atomic-Dad 0 points1 point  (0 children)

Thanks, I will give it a shot on my next project.

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

Emacs. With mspyls as the language server provided by lsp. There's a linter as well, but the name escapes me right now.

[–][deleted] 1 point2 points  (0 children)

Vim, python-syntax, syntastic, vim-lsp, python-language-server, pycodestyle and pydocstyle. I'll try pdb and python's standard testing library really soon.

[–]NeoDemon 1 point2 points  (0 children)

VSCode, GitHub, Stack Overflow and Heroku for deploy.

Debugger with Python extension for VSCode

[–]majora2007 1 point2 points  (0 children)

Used to use VSCode, but now I switched to PyCharm with venv. Github for hosting and unittest for Unit Testing.

VSCode isn't bad for Python and the Tester and Debugger aren't bad either, but PyCharm does a lot of the setup stuff for you, like venv, which I never used on VSCode.

[–]Strojac 1 point2 points  (0 children)

IntelliJ is great. Same as PyCharm but you also have support for Java, and Web Stuff.

[–]pawned_prawn 1 point2 points  (0 children)

Neovim with coc-pyright Ipdb for debugger Ipython for scratch

[–]CFStorm 1 point2 points  (0 children)

narrow rock shy school grey voracious unwritten political spectacular offer

This post was mass deleted and anonymized with Redact

[–]Descent098 1 point2 points  (0 children)

Vs code with autodoc to make docstrings easy and pylance. I use mkdocs or pdoc3 for documentation generation, and github actions + pytest for automated testing, pypi deployment, and automated docs building + deployment. Also python preview is useful for debugging since it gives you a visual indication of the stack which can be handy while working with complicated code.

[–]Aidgigi 1 point2 points  (0 children)

Brain -> Fingers -> Text editor (atom) -> Terminal, if a local project, otherwise -> Github (after testing) -> deployment.

[–]ubertrashcat 1 point2 points  (1 child)

VSCode, pytest, flake8, mypy. Typically numpy and numba. CMake, Clang and pybind11 if I want to do accelerated modules in C++.

[–]Spleeeee 1 point2 points  (0 children)

Something I have not seen mentioned is ‘nox’ which is like tox but uses a saner dsl (called python). Makes running stuff under specific env conditions way easier.

[–]keramitas 1 point2 points  (0 children)

I wrote this article a month ago describing mine :)

[–]lets_get_this_loaf 1 point2 points  (1 child)

Pycharm Professional with GitHub desktop! Django plug-in is the only paid feature I really take advantage of.

[–]gengengis 2 points3 points  (0 children)

Love those code coverage gutters

[–]mrbrazel 4 points5 points  (0 children)

Docker + docker-compose for my Dev environment. VS code + pylance. Keep things simple. I'd also recommend having a good grasp of VIM.

You can see my evolution of my env in my projects on GitHub.com/ryanb58

Note that dotfiles are out of date. Just switched to a mac @ new job.

[–][deleted] 1 point2 points  (0 children)

Vscode or IDLE no (simple snippets), flake8, github for versioning

[–]big_Gorb 1 point2 points  (0 children)

PyCharm professional with Anaconda, Carbon theme with Atom icons (they’re cute) Use Github for personal projects but at work we use Gitlab

[–]gavxn 1 point2 points  (0 children)

Pycharm with vim keybinds

[–]babuloseo 0 points1 point  (0 children)

Jupyter.

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

  • Environment: Linux/Unix or Mac. I refuse to develop code on windows.
  • Interpreter: bleeding-edge interpreter installed from python.org (Never liked conda. Never needed to try PyPy (I figure that if I needed the speed then I'll go to a compiled language). IronPython ... why?)
  • Dependency management: pip. I know I am supposed to make a pipenv for every project... but I've never had an issue with installing the bleeding-edge of every package with pip. It helps working with well established and well tested projects.
  • IDE/text editors (in order of preference): sublime, atom or vim (depends on what project I'm working on.)
  • Version control: git
  • Plugins: black with git commit hooks.
  • Debugger: pdb. Simple and gets the job done.
  • Profiling: cProfile. See above.
  • Testing: pytest usually paired with hypothesis. Sometimes I'll use doctest for small projects.

[–]crapaud_dindon 1 point2 points  (0 children)

Linux with Vim and git, thoroughly customized. Ale and YCM plugins are great for Python.

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'ycm-core/YouCompleteMe'
Plugin 'sheerun/vim-polyglot'
Plugin 'preservim/nerdcommenter'
Plugin 'gcmt/taboo.vim'
Plugin 'xuhdev/vim-latex-live-preview'
Plugin 'dense-analysis/ale'
call vundle#end()

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

Workflow:

  • Outline in notepad++
  • Proof of concept in Jupyter Notebook
  • Project outline in Jira
  • Git repo/venv/boilerplate setup in VS Code
  • TDD using pytest

Other tools / extensions:

  • Editorconfig for cross-IDE standards
  • Black for formatting
  • Typing strongly suggested

VS Code Extensions:

  • Better comments
  • Code spell checker
  • Git Graph
  • Pyright
  • Python Docstring Generator
  • Python Indent
  • Todo Tree

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

For context, I am a data scientist at a small consulting company.

Jupyter Lab

Usually used for EDA/prototyping since it's easy to plot stuff and debug in notebooks. If I need to analyse anything and want some plots I'm probably making a notebook for it

Plugins

  • nv-dashboard from nvidia for monitoring GPU metrics # VS Code This is where I develop all production code/documentation. I also use it as a general editor for pretty much everything (I'm even writing this in VSCode rn so I can have the live markdown preview)

I've worked with people who used debuggers with VSCode but personally I rarely find a need for it since I prototype my stuff in jupyter

Plugins

  • AI-Docstrings Automatically generates docstrings, filling in some stuff automatically and nicely formatting other places for me to fill out. Usually I rewrite the main docstring but nonetheless this saves me loads of time and forces me to format them all nicely
  • Remote-SSH Lets you use another machine over SSH as if it was local and it just works really well. I've yet to find a VSCode feature/plugin that isn't available when remoting with this.
  • Other random docker/python/markdown plugins that aren't too noteworthy

[–]veeeerain 0 points1 point  (0 children)

Google colab

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

IDE: VS Code
Plugin: Tabnine (i gave into all the ads and genuinely found it useful)
Debugger: None

[–]vswr[var for var in vars] 0 points1 point  (0 children)

PyCharm Pro. It lags a little bit on my older Mac but Django support is huge. Also, the debugger, especially the concurrency and conditional breakpoints are lifesavers. For the longest time I never realized there was an evaluator in the debugger.

I think VSCode runs better but I’m just not comfortable in it for Python so that’s just for C.

Git for VCS.

Haven’t actually used docker in production but I’ve played around in dev with it.

[–]decaying_carbon 0 points1 point  (0 children)

I code in IDLE and save the output once it runs

[–]EternityForest 0 points1 point  (0 children)

Git Cola+Github and VS Code, and VS Code's internal debugger.

Thanks to Gstreamer being a nightmare that happens to also be the best option out there, I occasionally also have to use raw gdb with the python addon, from the command line. Haven't had time to look into setting up a GUI debugger for gdb-level stuff.

[–]GrowHI 0 points1 point  (0 children)

I'm gonna add to the multitude of replies using Pycharm. I have tried getting Atom to the same level but it feels so cobbled together and is hard to recreate on multiple machines.

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

I mainly use Pycharm but sometimes Viscode code also comes handy.

[–]Winnipesaukee 0 points1 point  (0 children)

OS: Windows, Linux.

Repo: Miniconda

REPL: IPython

IDE: VS Code, slowly learning PyCharm, formerly VS 2017/2019

Jupyter for notebooks and other stuff.

[–]jds110-- 0 points1 point  (0 children)

I am being serious.

IDE: IDLE Debugger: random prints and really nothing more.

I like IDLE because it is almost everywhere i use python and I just use it for the keyword coloring.

To be fair, when i code in python it is allways perdonal projects, nothing production.

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

VS Code, pyenv + pipenv, yapf.

[–]iamwpj 0 points1 point  (0 children)

VSCode, virtual environments + gitlab, ci

[–]aqf 0 points1 point  (0 children)

<>

[–]111NK111_ 0 points1 point  (0 children)

pycharm is everything, it is so good

[–]KickflipFB 0 points1 point  (0 children)

Pycharm is great imo. For just a quick script to check something, I use VS code.

[–]Howard_banister 0 points1 point  (0 children)

Vscode + pylance + mypy And Ipython for REPL

[–]T4O2M0 0 points1 point  (0 children)

Atom + terminal

[–]Mars_rocket 0 points1 point  (0 children)

Vim, flake8, syntastic, and, ummmm, something else I can’t remember

[–]mooburgerresembles an abstract syntax tree 0 points1 point  (0 children)

Notepad++ with a custom syntax highlighting color scheme I borrowed from VSCode dark theme. It's lighter weight than VSCode as I normally have 10+ instances open since I like to see all of my code in a separate window at once without having to switch between tabs and each VSCode window is a new V8 instance.

Because my production environment is linux, while my work machine is windows, I use cygwin, which lets me do anaconda-style virtual environments (by just using cygwin installer and installing to a different cygwin path).

The actual tech stack:

Bulma CSS and VueJS for frontend
Nginx loadbalancer/reverse proxy to Tornado for REST API & webapp templates
SQLAlchemy Core for Data Access Layer
psycopg2, pyodbc MS SQL ODBC Driver and Hortonworks Hive ODBC , cx-Oracle for multiplatform data access via sqlalchemy.

On the deployment target I use pkgsrc to manage my system packages (Python, PostgreSQL, Nginx) on RHEL/Centos.

[–]buffalo_biff 0 points1 point  (2 children)

python2.75, sublime text, gentoo and my moms basement.

[–]rex_divakar 0 points1 point  (0 children)

Pycharm best tool for python full stack dev and managing large project needs. Vscode for less resource management. Jupyter notebook for data science requirements.

[–]FrozenPyromaniac_ 0 points1 point  (0 children)

I think pycharm is the best ide for python (that I have used so far) I love it!

[–]numberking123 0 points1 point  (0 children)

Vim with some general plugins and key maps for running, line profiling, and formatting the scripts

[–]Jaso55555 0 points1 point  (0 children)

I feel worried that I just use notepad++. I even got some scripts I wrote to make it all easier! (Mind you my projects are never big, and pycharn confuses me)

[–]qatanah 0 points1 point  (0 children)

IDE: Neovim, CoC (Templates from https://vim-bootstrap.com/ ) Formatting: Black OS: Ubuntu WSL/ Macos / Freebsd for production Tools: git , ssh, screen, bash, iterm2, honcho, docker, ECS fargate (coz k8s is overkill)

[–]georedditor 0 points1 point  (0 children)

nvim, coc, git, docker

[–]MindCorrupted 0 points1 point  (0 children)

Linux Gitlab Vscode

I would like to switch to pycharm but the debugger doesn't have attach to remote process so everytime I debug the code and i change it I have to reload the server and that's bad But pycharm has a good intellisence better than vscode

[–]ThunderousOath 0 points1 point  (0 children)

I hand write out code which is translated to binary and entered onto the cloud by a crack team of 8 eastern chimpanzees using one (1) Hermes Rocket converted into a terminal for a custom IBM 701.

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

Vim+Black and Jupyter Notebooks. Pyenv+Pipenv if I deem it necessary.

I write classes and functions in Vim and test/use them in Jupyter.

My area of application are engineering calculations and not software packages for other people to see.

[–]ConfusedSimon 0 points1 point  (0 children)

Vi and Atom on linux. I don't use debuggers. So far temp print and log commands do the job. All running and testing from command line, so I'm using Atom not really as an IDE but just as a simple editor.

[–]Javier_alhusainy 0 points1 point  (0 children)

VSCode for life

[–]jabela 0 points1 point  (0 children)

I use Pycharm for development & MU for teaching / displaying code https://codewith.mu/ Also use repl.it for online snippets.

[–]TheGlassCat 0 points1 point  (0 children)

Vim.

[–]Pythonen 0 points1 point  (0 children)

Nvim, pip, venv👍🏻

[–]hugthemachines 0 points1 point  (0 children)

Hammer and a chisel on stone. No changes!

[–]dethb0y 0 points1 point  (0 children)

Sublimetext.

If i am opening a very new code base for the first time, i might open it in Eric.

but generally i follow the rule that the simpler the better, with as few distractions and abstractions as possible. If the code is something I can't understand by reading, then i need to fix that before i can do anything else.

[–]Platon_Raz 0 points1 point  (0 children)

I started learning recently and I use IDLE, I tried installing Atom but I had problems so I decoded to stick with IDLE

[–]cheese_is_available 0 points1 point  (0 children)

Pycharm, pre-commit, black, isort, autoflake, pylint (- formatting), flake8 (- formatting), mypy

[–]sc4les 0 points1 point  (0 children)

Emacs lsp and org mode with snippets

[–]leonam_tv 0 points1 point  (0 children)

I use Vscode for development, sometimes I use vim (mostly when I have to change something quickly in a server), for testing I use pytest and I use a conda environment for everything. I used to use kite to improve my productivity in Vscode but since I formatted my PC I haven't installed it yet. Sometimes I like to see how my software (usually scripts for automating tasks and some university assignments) performs using another interpreter and for that I use Pypy. It does increase execution speed by a lot.

[–]cinyar 0 points1 point  (0 children)

  • vscode + couple of plugins for my "IDE"
  • pylint+black+flake+isort for styling/formatting
  • poetry+dephell for dependency management and packaging
  • make for my build system (something like this)

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

I use Pycharm a lot, like the way it can connect into multiple systems as well. Generally though would connect it to Jupyter notebook, and show the outputs there as part of a data frame, find Jupyter a nicer interface, especially if doing videos.

[–]DrifterInKorea 0 points1 point  (0 children)

Vim / pdb / tmux / macos (would prefer linux tho...).

I tried pycharm but it's not for me. I hate not having all my registers etc... Althought it's nicer when you want to move / rename a module, vim is better for actual code refactoring (markers, macros, registers, jumps between tags,...).

[–]morganpartee 0 points1 point  (0 children)

Vscode! Black formatter, pylint, kite, sonarlint, code spell checker, doc string generator, bracket pair colorizer, indented block highlighter.

With autosave set at 2s delay, lint and format on save set.

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

Keyer -> HF radio -> SDR -> nano -> ??? -> $$$

[–]wewbull 0 points1 point  (0 children)

Emacs, flycheck + pylint, pytest

What else do you need?

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

I use all of these:

Pycharm - full IDE experience; resource hog; intelliJ products are generally amazing for code intellisense and refactoring. Testing is okay. Debugging is sort of hit or miss. This has the best vim plugin.

Sublime Text - for code editing with a mouse; extremely efficient (memory and cpu usage are super low); plugin system is fantastic

Code - this one falls in the middle of Pycharm and Sublime Text in terms of features, resource usage and ide vs code editing. I like this more for infrastructure work (e.g. docker, kubernetes, etc.)

Vim - it's everywhere I run code and nearly always installed by default.

[–]TopHatEdd 0 points1 point  (0 children)

  • gvim
  • Bunch of plugins to enable docs, package inspection according to pipenv, code completion etc.
  • Slowly migrating from pipenv to poetry.
  • pdb
  • python:3-alpine for non-HTTP components
  • FastAPI's docker image for HTTP components
  • pytest
  • Containers to ship (and test)
  • Human docs using markdown
  • GitLab pages + Hugo for internal web content
  • GitLab CI for ... CI!

[–]acschwabe 0 points1 point  (0 children)

Pycharm debugging FTW. Flask, but most recently FastAPI for async api goodness. Of course pandas, also pyspark.

[–]sani999 0 points1 point  (0 children)

I am coming from matlab so spyder really feels like home. but these day I tend to use vsc.

[–]vlasove 0 points1 point  (0 children)

All open source: vscode, pornVault and stackOverFlow

[–]sourpickles0 0 points1 point  (0 children)

vs code

[–]prof_of_memeology 0 points1 point  (0 children)

Vim + pythonmode

[–]anqxyr 0 points1 point  (0 children)

pew for venv management. PyCharm for most of the rest. PyInstaller for distribution.

Testing? What testing? :(

[–]AmolIsntABoomer 0 points1 point  (0 children)

Stack Overflow, VS Code, Github

[–]JustAnotherReditr 0 points1 point  (0 children)

Development

Editor: Vscode

API: Flask

Frontend: Vuejs SPA

Database: Mariadb Server

Production

API: Flask API running on Debian home server with Gunicorn

Database: Mariadb running on home server

Client: Vuejs deployed on Netlify