The Python Foundation has really been amping up the real-time capabilities of Python with the new asyncio library. Asyncio enables Pythonistas to write code that is asynchronous, allowing for a more event-driven approach to writing software.
What platform would benefit more from this new tech than microcomputers like the Raspberry Pi, which are finding new life as lightweight, yet powerful IoT (Internet of Things) devices? In my never-ending quest to set up a feedback system in my office where light levels can be communicated to an automated shade setup, I figured this would be the very first step to get there.
I wanted to have a Raspberry Pi that checks the following boxes:
Raspbian is the go-to OS for Raspberry Pi. It has the most support on this hardware, and also runs the smoothest. It is a Linux Distro that is Debian-based, so a lot of the software packages you can install in Debian and Ubuntu are the same as the ones you can install on Raspbian.
PiBakery Route (Recommended)
NOOBS Route
Using a Python version manager like pyenv to install Python makes the process less a painful chore and more a pleasant pastime. Raspbian comes with Python 2.x and the package manager enables installing Python 3.4.x, but if we want to mess around with asyncio's fabulous async/await syntactic sugar, Python ≥3.5 is where it's at.
And that's it! Optionally, you can install something like virtualenvwrapper, but on lightweight platforms like the Pi, I tend to just install things directly, since it's unlikely I'll be using it for anything else.
At this point, you might be asking me, "Dean, why did you make me go through pyenv-installer to install Python 3.5 when Python 3.4 also has asyncio, albeit in a slightly diminished form?". Let me refer you to this page, which details all the ways in which asyncio is made even better with the availability of things like asynchronous context managers (because calling anything.close() directly is such a drag), async/await syntax, and other new goodness. Also, with PEP448, unpacking from lists and dicts is even better! Who wouldn't want that!