Those sites (upwork, fiverr, etc) are forms of freelancing but be warned: there is fierce competition there.
I use these as a client and my python jobs usually get a lot of candidates.
I mean, most of these are beginners, far worse than me in Python :) (and I am no expert, yet) but they submit a proposal anyway.
My feeling is that being actually good in Python isn't going to get you ahead of these people. It's very hard for me, as a client, to tell who is a reasonable programmer and who is hacking stuff copied from a youtube tutorial posted in 2015...
As for more job-like-freelancing. It's definitely a thing and it's definitely growing. If you were based in London, I would wholeheartedly advise you orient your career towards freelancing.
This does mean you need to model your household economy around the financial implications of being a freelancer. You are not going to have a steady source of income. It's more like a few good jobs a year - but they could easily amount to more than a yearly salary.
For example, I was offered a Python job in London for £800 a day. Unfortunately, my Python wasn't good enough for me to feel that I should apply - but it my Python was really bad and, if I were in anyway into Python, I could have made it happen.
Feels like the going rate right now in London is £600-1200 for good-elite Python engineers.
A daily portion of a yearly salary would be about £150-400
The above numbers are before tax, which could make the difference smaller. Also, again, can't guarantee you'd be working for £1000 every day of the year - if they were looking for such an engagement, they would hire a permanent employee.
Also, if I made £800 per day, I wouldn't even want to work the whole year. I'd hit it hard during the winter and go on large breaks during the summer