Free Python Resources

There are lots of free resources for learning Python available now. I wrote about some of them way back in 2013, but there’s even more now then there was then! In this article, I want to share these resources with you. If I miss anything that you have found helpful, feel free to link to them in the comments.

Blogs and Websites

When I am learning Python, one of the first places I turn to is the official Python documentation:

There are also lots of other pieces of documentation that can be found on the Python website.

Doug Hellman has been producing a series called Python Module of the Week (PyMOTW) for years. He now has a version of the series for Python 3 as well. Here are the links:

There are two interesting “Hitchhiker” websites on Python, but I don’t think they’re related except by name:

DataCamp has lots of good free and paid content on Python for Data Science. They also have a neat blog with Python content.

If you are into reading blogs, then Planet Python is for you. Planet Python is basically an RSS aggregator of dozens of Python blogs. You can see links to each blog that is aggregated on the left side of the page.

Free Python Books

Mark Pilgrim’s books have been online for over a decade. He created two versions of Dive Into Python, one for Python 2 and the other for 3. I’m just going to link to Python 3 here.

Al Sweigart has been putting out Python books for quite a while as well. His latest Python book is Automate the Boring Stuff with Python. It’s a fun book and well worth checking out. You can see his other books over on his website. They are all available for free, but you can purchase them too.

WikiBooks has a Python 3 book called Non-Programmer’s Tutorial for Python 3 that is still recommended.

While I’ve never read it, I have heard that Full Stack Python is good.

If you’d like to learn Test-Driven Development, there’s a book for that too over on Obey the Testing Goat. I will note that this book is heavily focused on web programming with Python and how to test that, so keep that in mind.

There is a neat online book called Program Arcade Games with Python and Pygame that is available for free in multiple languages, which is something that the previous books just don’t offer.

Finally I thought I would mention my own book, Python 101 which is available for free or pay what you want over on Leanpub.

Wrapping Up

There are tons of other free resources and books on Python too. These are just an overview. If you happen to get stuck in any of these books or resources, then you will be happy to know that there are a lot of helpful people on the following websites that will answer your questions:

Have fun learning Python. It’s a great language!

Getting Started with pywebview

I stumbled across the pywebview project a couple of weeks ago. The pywebview package “is a lightweight cross-platform wrapper around a webview component that allows to display HTML content in its own native GUI window.” It uses WebKit on OSX and Linux and Trident (MSHTML) on Windows, which is actually what wxPython’s webview widget also does. The idea behind pywebview is that it provides you the ability to load a website in a desktop application, kind of Electron.

While pywebview claims it “has no dependencies on an external GUI framework”, on Windows it requires pythonnet, PyWin32 and comtypes installed. OSX requires “pyobjc”, although that is included with the default Python installed in OSX. For Linux, it’s a bit more complicated. On GTK3 based systems you will need PyGObject whereas on Debian based systems, you’ll need to install PyGObject + gir1.2-webkit-3.0. Finally, you can also use PyQt 4 or 5.

You can use Python micro-web frameworks, such as Flask or bottle, with pywebview to create cool applications using HTML5 instead of Python.

To install pywebview itself, just use pip:

pip install pywebview

Once installed and assuming you also have the prerequisites, you can do something like this:

import webview
webview.create_window('My Web App', '')

This will load the specified URL in a window with the specified title (i.e. the first argument). Your new application should end up looking something like this:

Continue reading Getting Started with pywebview

PyDev of the Week: Honza Král

This week we welcome Honza Král (@HonzaKral) as our PyDev of the Week! Honza is one of the core developers of the Django web framework. He is also the maintainer of the official Python client to Elasticsearch. You can see some of the projects he is interested in or working on over at Github. Let’s spend some time getting to know Honza better!

Can you tell us a little about yourself (hobbies, education, etc):

I grew up in the Old Town of Prague, Czech Republic where I also went to school, including University where I studied computer science (which I didn’t finish). During my studies I discovered Python and immediately fell in love, first with the language and later, after going to my first Pycon in 2008, with the community.

I became a part of the Django community which was (and still is to this day) very welcoming. I became a part of it to learn and, hopefully, contribute something back. For my part it worked amazingly well – I got all my recent jobs through the community and even met my fiancee at a EuroPython conference!

Nowadays I work for Elastic, the company behind Elasticsearch where I do consulting – traveling around the world helping people be successful with open source – and also maintain the official Python client. Continue reading PyDev of the Week: Honza Král

wxPython Phoenix Alpha Release

The wxPython project made a major announcement over the weekend in releasing an alpha version of the new wxPython “Phoenix” package to the Python Packaging Index (PyPI). wxPython is a major cross-platform desktop graphics user interface toolkit for Python. It wraps wxWidgets and is one of the major competitors to PyQt. All new releases of wxPython will be going to PyPI in the future. You can get a copy directly here:

It should also be noted that wxPython is now being distributed as a Python wheel and a tarball. What this means is that you can now install wxPython with pip:

pip install wxPython

If you want to stay on the bleeding edge and use a daily snapshot build, then you do the following:

pip install --pre --find-links wxPython

I’ve been using the Phoenix version of wxPython for over a year and so far it has worked great! You can read more about the differences between it and Classic here:

PyDev of the Week: James Bennett

This week we welcome James Bennett as our PyDev of the Week! James is one of the core developers of the Django web framework. He is also on the Board of Directors of the Django Software Foundation. James maintains a blog and has several fun projects over on Github that are worth checking out. Now let’s take some time to get to know our fellow Pythoneer better!

Can you tell us a little about yourself (hobbies, education, etc):

I did my degree in philosophy, at a little liberal-arts college in Virginia. It wasn’t until I was in college that I had regular access to a computer or the internet, and I I taught myself HTML one weekend because a professor offered the choice between writing a 20-page paper or building a 5-page website to present some research, and I was lazy. Then people started paying me to do sites for them (it was the 90s, when people found out you knew HTML they’d do that!), and things just kind of proceeded from there. I never did take any CS courses, but I did learn DocBook and LaTeX when deciding how to typeset my thesis.

After college I bounced around a bit, worked an office job for a while to build up some savings, then started doing full-time contract work as a web developer. Later, I tried and fell in love with Django shortly after it was initially released which led to moving to Kansas and working at the company which originally developed Django. While I worked there, I picked up a commit bit and became the release manager. After five years there I went to Mozilla, where I spent four years as a member of the team building the Mozilla Developer Network platform.

These days I live in the San Francisco Bay area and work at Clover Health, where we’re trying to make health insurance a whole lot better. I also keep a blog where I occasionally write about Django, Python, or whatever else is on my mind.

My unbearably nerdy non-tech hobby is Magic: The Gathering, which came out originally when I was in middle school. I’ve played it off and on since then, and for the past seven years I’ve also worked as a tournament official on the semi-professional and professional circuits (yes, there are professional tournaments). I’ve met a lot of cool people through that, and gotten to travel quite a bit; once, for one of the top-tier pro tournaments I got a free trip to Hawaii, since that was where it was held.

The amount of travel I ended up doing between that and tech conferences and (until 2015) being a remote employee also got me sort of inevitably into being a bit of an aviation geek and knowing more than is good for me about planes, airports and frequent-flyer programs.

Continue reading PyDev of the Week: James Bennett

PyDev of the Week: Paweł Piotr Przeradowski

This week we welcome Paweł Piotr Przeradowski (@squeaky_pl ) as our PyDev of the Week! Pawel is the creative mind behind Japronto, which is a Python 3.5+ web micro-framework integrated with pipelining HTTP server based on uvloop and picohttpparser. Pawel has a couple of other interesting projects over on Github as well.

Let’s take a few moments to get to know Pawel!

Can you tell us a little about yourself (hobbies, education, etc):

I was born in a small town in north west Poland about 60 km from the German border. I was quite lucky to have a computer at home from the very early days. Knowing how things work behind the scene has been always very intriguing to me. At the of 8 I started doing short programs in BASIC language. I learnt to program by modifying examples given in Commodore 64 manual we had at home. At the age of 12 we’ve got our very first PC. I played for a while with QBASIC that was shipped with DOS and then I decided that I need to learn something more serious. I’ve bought my first book on C and started playing with Borland C++ compiler when I was 13. At the age of 15 I decided to learn x86 assembler to write my own boot loaders and primitive real mode operating systems. When I was 16 I got interested in web development and learnt PHP. At 19 I started a computer since course at the university but I got bored pretty quickly and after completing first year with literally no effort I landed my first job as a web developer and decided not to continue my studies. I also got interested in Python around that time but since there was no job market for it at the time in Poland it was only limited to my own private projects. After working for 2 years as a programmer I decided to go to the Netherlands and worked further as a web developer there. More or less 5 years ago I moved to Spain and I’ve been living between Spain and Brazil since then. I’ve been doing exclusively Python and DevOps for those last years.

Besides programming I love learning natural languages and I have a lot of passion for comparative grammar and etymology. I speak pretty good Portuguese and Spanish. I work mainly in English and of course my native language is Polish. I’m trying to learn French at the moment. I’m into digital photography a lot and I used to own several professional grade cameras. These days I don’t find time to make use of them so I sold all of that. I also love traveling and understanding cultures through meeting locals. Continue reading PyDev of the Week: Paweł Piotr Przeradowski

PyDev of the Week: Russell Keith-Magee

This week we welcome Russell Keith-Magee as our PyDev of the Week! Russell is a core Django developer and former president of the Django software Foundation. He has been a contributor to the open source community for quite some time. You can see some of his contributions over on Github. He is also the founder of the Beeware project, which is a collection of projects that can be used to help develop, debug and launch Python software. Let’s take a few minutes to get to know Russell better!

Can you tell us a little about yourself (hobbies, education, etc):

I’ve been tinkering with computers since I was 7, when my father bought one of the first Commodore 64s in Australia. I studied Physics as an undergraduate at university, but then transferred to the Computer Science department to complete my Honours degree and a PhD. While I was completing my PhD, my supervisor and I came to a mutual understanding that my future did not lie in research, and so I headed out into the world and have been working at various tech startups ever since.

I spend a lot of my spare time tinkering on computing stuff, but I’m also a huge LEGO fan, and I do a bit of photography as well. A relaxing weekend is binge watching a bunch of TV with a good toasted cheese sandwich and bottle of Speyside single malt by my side.

Why did you start using Python?

Originally (this was back in the Python 1.5 days), Python was just a system integration language for me. I started using RedHat quite early on, and many of RedHat’s tools were written in Python. Initially, coming from a C background, I had a fairly visceral dislike of the indentation-based syntax. But over time, I came to appreciate that it was really just enforcing good code style by making “bad” style invalid syntax.

Around the mid 2000s, I was starting to tinker around with the web, and I found Django – at which point, I pretty much pivoted to using Python full time.

Continue reading PyDev of the Week: Russell Keith-Magee

PyDev of the Week: Roman Sirokov

This week we welcome Roman Sirokov as our PyDev of the Week! He is the author of pywebview, which is a cross-platform lightweight native wrapper around a web view component. You can basically create a desktop user interface using web technologies and frameworks. He is quite active on Github where you can see all the projects he is involved with. Let’s take a few moments to learn more about our fellow Pythonista!

Can you tell us a little about yourself (hobbies, education, etc):

I am a software engineer from Helsinki, Finland. I currently work for Siili Solutions as a full-stack developer doing various client projects.

I have two master degrees, one in computer science from Aalto University and the second one in bioinformatics from University of Helsinki. The first degree was about graduating and the second one about actually wanting to learn something.

I have traveled quite a bit and the longest I have spent on the road was nine months. On one occasion I cycled about 3000km around Baltic Sea during a very rainy summer. I am an avid cross-country skier and try to get as much as skiing as possible with very little snow we get nowadays. I practice ashtanga yoga and vipassana meditation too and try to attend a vipassana retreat once a year. Other than that I dj mostly cosmic music and try to keep my cats entertained. Some of my mixes can be found here.

Continue reading PyDev of the Week: Roman Sirokov

Python 101 Online Course is FREE for 48 Hours!

My Python 101 online course will be completely FREE for the next 48 hours on Educative’s website. Be sure to go get yourself a copy.

It is based on my Python 101 book. When you get it from Educative, it will be yours to keep for life. Note that this is an interactive online course, not a video course. If you enjoy the Python 101 online course, you can get my second online course, Python 201 for 50% off just by using the following coupon: au-promo-py201.


  • Python 101 Online course (FREE for 48 Hours)
  • Python 201 Online course (50% off with au-promo-py201 coupon

You can also get my eBooks for 50% off the suggested price with the following links: