DEV Community

Lamri Abdellah Ramdane
Lamri Abdellah Ramdane

Posted on

Tools Make the Dev: 9 Python Productivity Tools You Shouldn’t Miss

Whether a project becomes a clean, stable build or a messy spaghetti mountain often depends not just on code quality — but on workflow and tools.

A good tool can automate repetitive chaos, clarify complex processes, and keep your project clean and healthy.

Today, I’m not talking about well-known libraries like Requests or Pandas.

Instead, I’ll share some lesser-known yet powerful tools that have genuinely improved my workflow and developer experience.


🧰 ServBay — The All-in-One Local Dev Environment Manager

Ever got headaches from managing multiple Python environments?

One project needs Python 3.8, another wants 3.11, and that legacy one still runs 2.7.

You can use pyenv, virtualenv, and conda together… but it’s messy.

Then I found ServBay — and those problems vanished. It solves a ton of pain points:

  • Multiple Python versions, cleanly isolated:

    I can install Python 2.7 to 3.14 with one click, each version sandboxed and tidy. Switching between projects is effortless.

  • One-stop services:

    It’s more than a Python manager — it includes Nginx, MariaDB, MySQL, Redis, and more.

    I just open one control panel and start what I need.

  • Run local AI models easily:

    Need to test open-source models like Qwen 3 locally? Just install and run in ServBay — no environment chaos.

In short: ServBay unified my entire local dev setup — Python versions, databases, and even AI models — all in one place.


⚙️ Doit — Goodbye, Messy Makefiles

Every project has tasks like formatting code, running tests, or packaging builds.

I used to juggle shell scripts and Makefiles… until I met Doit.

It lets you define and run automation tasks in pure Python.

Example setup (file: dodo.py):

def task_format():

 """Format code"""

 return { 'actions': ['ruff check . --fix'] }

def task_test():

 """Run tests after formatting"""

 return { 'actions': ['pytest -q'], 'task_dep': ['format'] }

Then just run doit in your terminal — it handles dependencies and runs what’s needed.

In short: It replaced my scattered scripts with something cleaner and more Pythonic.


🧪 Playwright — The Modern Web Automation Powerhouse

I used Selenium for years for web automation and scraping.

But since switching to Playwright, my workflow feels like jumping from a bicycle to a sports car.

Example:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:

 browser = p.chromium.launch()

 page = browser.new_page()

 page.goto("https://www.google.com")

 page.screenshot(path="google.png")

 browser.close()

In short: Playwright is faster, more reliable, and async-friendly — my go-to for web automation now.


🧩 pyinfra — Deploy Servers with Python Code

Many use Ansible for server automation, but writing YAML for complex logic gets painful.

pyinfra fixes that by letting you use plain Python to describe infrastructure.

Example:

from pyinfra import host

from pyinfra.operations import server, files

server.user(name="Create app user", user="app", home="/home/app")

files.sync(name="Sync app files", src="dist/app/", dest="/opt/app/")

In short: If you’d rather code than configure, pyinfra is a dream come true.


🖥️ Rio — Build Terminal UI Like a Frontend Dev

Sometimes, I want my CLI tools to look better than just text prompts.

Rio feels like React but for terminal apps — declarative, component-based, and fun.

Example:

import rio

class MyAppComponent(rio.Component):

 def build(self) -> rio.Component:

  return rio.Column(

   rio.Text("Hello, World!", style="heading1"),

   rio.Button("Click Me!", on_press=lambda: print("Clicked!")),

  )

app = rio.App(build=MyAppComponent)

app.run()

In short: A React-style framework for building beautiful terminal apps. I love its design philosophy.


🪟 FreeSimpleGUI — Add a Simple GUI to Scripts in Minutes

Sometimes your non-technical users just can’t handle command lines.

But building a Qt or Tkinter app for a small tool is overkill.

FreeSimpleGUI fills that gap perfectly.

Example:

import FreeSimpleGUI as sg

layout = [

 [sg.Text("Enter your name")],

 [sg.InputText(key='-INPUT-')],

 [sg.Button('OK'), sg.Button('Cancel')]

]

window = sg.Window('Simple Window', layout)

while True:

 event, values = window.read()

 if event in (sg.WIN_CLOSED, 'Cancel'):

  break

 print(f'Hello, {values["-INPUT-"]}!')

window.close()

In short: Great for quick, user-friendly interfaces with minimal effort.


🔥 py-spy — Zero-Overhead Python Profiler

When your Python app suddenly consumes 100% CPU or slows to a crawl,

py-spy is the hero you want.

It attaches to a running process without changing your code or restarting anything.

Commands:

py-spy top --pid 12345

py-spy record -o profile.svg --pid 12345

In short: It’s my go-to for production performance debugging — simple, powerful, and safe.


⚡ watchfiles — Super-Fast File Watching and Auto-Reload

Ever wished your app would auto-reload after code changes?

watchfiles, written in Rust, does that blazingly fast.

Example:

from watchfiles import watch

from subprocess import run

for changes in watch('./src', watch_filter=lambda c, f: f.endswith('.py')):

 print("File changed:", changes)

 run(["pytest", "-q"])

In short: I use it to re-run tests or reload services automatically — huge productivity boost.


🕸️ BeautifulSoup — The Classic HTML Parser

It’s old but gold.

For web scraping and HTML parsing, BeautifulSoup remains one of the easiest tools ever.

Example:

from bs4 import BeautifulSoup

html_doc = """

A Story

The Dormouse's story



"""

soup = BeautifulSoup(html_doc, 'html.parser')

print(soup.title.string) # Output: A Story

In short: Still my favorite when extracting data from messy HTML.


Final Thoughts

I hope some of these tools find their way into your daily workflow.

A great tool isn’t the most complex one — it’s the one that solves your problem elegantly.

And if you’re still juggling local environments, databases, and AI setups,

take a look at ServBay — it might become your new favorite companion for development.

Top comments (0)