Turning a Python app into a real product feels harder than writing the code
Posted by Haunting-Shower1654@reddit | Python | View on Reddit | 50 comments
In Python, the actual app construction usually feels pretty straightforward. The hard part starts when you try to turn it into something real people can actually use.
Things like packaging, updates, installers, compatibility issues, access control, managing different systems etc. take a lot longer than I thought they would.
At first, I thought the hard part was finishing the code. But now it feels like everything afterwards is a whole new ball game.
Curious if anyone else who builds Python apps has felt the same.
AmoebaDue6638@reddit
The code is maybe 20% of a real product. Auth, billing, deployment, monitoring, and keeping it alive at 3am are the other 80%. Most devs underestimate this until they ship something real.
nattyballs@reddit
Same problem here 😞
eirikirs@reddit
Pythin is, at its very core, a scrpting language, used for quick mockups and prototyping. You can use it to quickly create a proof of concept, but it doesn't scale very well to larger projects. Go for Java with Maven instead, it will be much easier.
RankWinner@reddit
You're writing this on Reddit, a site which, for most of its history, was written in Python with Django...
A huge amount of the backend for YouTube, Instagram, Netflix, Facebook, Uber, Spotify, Dropbox, etc... is written in python, and you're saying "it doesn't scale very well to larger projects"?
eirikirs@reddit
Correct, Python doesn't have proper encapsulation, immutability, nor overloading. It was intended for prototyping, but you are free to use it however you wish. Just because ghere are better tools for the job, it doesn't mean Python cannot be used.
RankWinner@reddit
Your personal opinion has nothing to do with the fact that some of the largest services in existence have their backends in python...
It's just objectively wrong to say python can't scale when python is used very commonly at the largest possible scales, not in random small areas but for entire monolithic services and for critical microservices serving billions upon billions of requests.
eirikirs@reddit
The thing about reading, is that you need to consider context, not isolated words. At no point did I say Python cannot scale. I said that it doesn't scale very well, where I implicitly contrasted Python to other languages.
RankWinner@reddit
.... but it does. That's what I don't understand about your comments.
The reality is that python does scale extremely well, given that it scaled to the entire world for YouTube, Instagram, Pinterest, Spotify, Dropbox, Reddit, Airbnb, LinkedIn, Lyft, and more.
There's a big difference between "Python doesn't scale well vs Java" and "Python scales extremely well, but if you used Java it would be better".
Especially on a subreddit used by learners, who could believe what you wrote, repeat it, and then get laughed at out of an interview.
eirikirs@reddit
You come across as a beginner within the domain, perhaps only knowing Python as a programming language. I'm an educator in CS, with more than 30 years of experience, and proficient in a multitude of languages. In order to understand scalability, you need to account for the design of the language itself, not simply state successful projects. I don't know what to say, except that, sure, one could use Python for larger projects. I have never said anything otherwise. You are simply confusing the discussion.
RankWinner@reddit
Ahahahaha damn I knew it, was going to jokingly ask if you were doing something academic related to CS since those are the only people I've ever seen get hung up on hypotheticals which have absolutely nothing to do with reality.
Being an 'educator in CS' is really not the boast you seem to think it is. There's a reason many companies prefer hiring non-CS STEM grads for programming roles: it takes far more effort to onboard a CS grad than e.g. a physics/maths grad since you have to spend so much time correcting the bullshit they 'learn' at uni, and convincing them that this thing they read in a book written 10 years ago by some academic who never even worked in software dev role is not how things work in the real world.
Either way, this is extremely simple dude, you wrote a comment replying to a beginner asking a question about python, on the python subreddit filled with beginners, saying:
If you don't see how that is completely wrong and MASSIVELY misleading, especially to beginners, and you really are a CS educator then... well, that explains a lot about the current state of CS grads.
Sincerely, somebody who has worked on massive projects (in multiple languages) that dealt with trillions of requests/exabytes of data, and who has (python) projects they contributed to literally running on Mars.
p.s. I'm just poking fun... mostly, don't intend to cause any real offence. But seriously, what you're saying was accurate up to maybe the early 2010's? But is completely wrong now and has been wrong for at least 15 years.
StationParticular142@reddit
You are too emotional my friend. You seem to have a good mind but its a messy mind and you are someone who does not have his mind in order/under control.
controlaltnerd@reddit
Home Assistant would like to have a word.
Prudent_Psychology59@reddit
it's just cpython + some data
doubledweeb@reddit
Yeah, this is the moment where “script” turns into “software product.” A simple pattern that helps: pick exactly one distribution story for now (e.g., pyinstaller one-file exe or a Docker image) and optimize for that path only. Once that’s boring and repeatable, then layer in auto-updates, multi-OS support, and nicer installers instead of trying to solve everything at once.
Spitfire_Blaziken@reddit
What you’re feeling is the jump from “script” to “product lifecycle.” The trick is to standardize: pick a packaging story (uv/pixi + pyproject, or PyInstaller), pick a single update channel, and document the happy path for users. Once you’ve done that once, you can almost template it for future projects instead of reinventing the wheel every time.
SheriffRoscoe@reddit
🌎👨🚀🔫👨🚀
Prudent_Psychology59@reddit
if you have uv set up, it's one prompt always from a complete portable app (at least for macos and linux)
Dillweed999@reddit
(Shakes cane weakly) You kids with your fancy uv, you don't know how good you have it. In my day we'd have to walk 10 miles to set up a venv, and we were happy to do it!
In all seriousness uv is great. I think the other traditional solution to this problem was to make it into a web app. You do all the setup on your server (be that in the cloud or local) and users access through browser
Prudent_Psychology59@reddit
I've been writing code for almost 10 years - yes I know
ProsodySpeaks@reddit
Feels pretty simple in windows tbh. Pin all dependencies, commit the lock file,eeven without pypi can install anywhere with
uv tool installfrom a git repo.ResourceElectrical49@reddit
Containerize with Docker, use Streamlit Cloud or cloud platforms for hosting, and automate updates with GitHub
wRAR_@reddit
That post hisrtory.
NotSoProGamerR@reddit
huh, its hidden, what did it show?
AreWeNotDoinPhrasing@reddit
Same posts going back weeks with terrible fucking name. When does shipping an app become harder then building it, how to keep source code a secret when shipping apps, how to distribute apps to non technical people, yada yada
wRAR_@reddit
Something like 8 posts about the same thing in different words on different subs.
Rikmastering@reddit
Op is struggling
Haunting-Shower1654@reddit (OP)
Yeah, my post history is basically me discovering new Python deployment problems in real time.
KimPeek@reddit
Clearly discovering AI alongside
Rikmastering@reddit
I only use python for my local helper scripts, so I can't help you with that, sorry. But good luck!
Randomboy89@reddit
Start by building a blank UI. Then you add things to it.
SweatshopCoder@reddit
Yeah. Python is not portable by any means, and can be a clunky mess to setup portable installations properly.
I used to work with a fetal-monitor software called "Obix", and it's just a python script to read data and display a graph. We had multiple issues with the fuckery of installs, updates, and just having the env setup properly.
NotACoderPleaseHelp@reddit
Anymore with python I'll just use the pth file and keep everything local in the folder and avoid the user folder.
But most of my python scripting is in a dozen blender installs going all the way back to 2. ... damn I'm old. But yeah I hate the users folder on windows with the passion of a thousand suns.
ProsodySpeaks@reddit
Looks like pth is going to get overhauled because of malware using it... Just a heads up!
NotACoderPleaseHelp@reddit
Actually, you got a link I can do some reading on that?
ProsodySpeaks@reddit
https://peps.python.org/pep-0829/
NotACoderPleaseHelp@reddit
gwd I fucking hope so!!!
Haunting-Shower1654@reddit (OP)
That is precisely the kind of stuff I keep coming across too. The app works fine itself but the setup side gets messy quickly
Icedasher@reddit
Just containerize it and use UV to build from the lockfile, that should just work most of the time. Set up a CI pipeline and target different architectures. I usually make a dockerfile for amd64 and arm64, then an apptainer for running on Linux through e.g. slurm.
But yes for certain tools this can be painful, e.g. if you use Pytorch and want it to run on A100s and V100s it's annoying to set up. Or the time my code froze just on Linux, because it used fork syscall for multiprocessing by default instead of spawn.
DoubleDoube@reddit
Python is originally a scripting language. That is where it inherits its ability to be picked up easily for things like one-off automation or initial data exploration. You aren’t going to write a quick script in a scripting language if it’s easier to do it some other way.
In addition to its scripting origins it is also an interpreted language which means it needs a runtime environment to run in. To bundle and package python means to put all the dependencies (including those related to the target platform) into a bundle and running a boot-loader on launch which runs the runtime environment that is then running the python code.
If you know you are developing a client application for multiple platforms, there are languages/tooling better suited.
pontz@reddit
It depends on your use case and audience. I build tools for manufacturing and we have a mix of web interfaces, cmd line scripts that get manually installed, and are now looking into pyinstaller exes which have been fairly simple to install. Next i need to look at ansible to manage deployment of these scripts more automatically than me going to every computer that needs it and putting it on the public desktop
NotACoderPleaseHelp@reddit
If you want to publish or make portable anything with python, go and study the winpythons, and python embedded(download from official site) you need to read site(dot)py, and you need to learn how system path works. and honestly looking into how blender sets up its internal python won't be a bad exercise as well.
My advice if you want something reasonably portable is to download embedded and winpython to pillage files from, and learn how to configure the pth file so that you can pip install on the embedded. This is a starting point. You will make mistakes and those mistakes are going to be your classroom.
riklaunim@reddit
There is a limited to no demand for simple desktop apps and then when you want to make a web or desktop or mobile app - welcome to UX/UI aspects, not to mention business aspects if you want to spin that as well.
jabrodo@reddit
So responding with respect to some of your past posts, most people use something like pyinstaller to provide a single standalone executable to end users that they can double click to launch.
If you can trust the user to have a tool and be slightly comfortable with the terminal, using a PEP 621 pyproject.toml and something like uv or pixi (using uv/pixi run myapp) those options work really well across platforms.
That said, python isnt really meant to build standalone pre compiled executables. From what I understand, even pyinstaller just bundles the python runtime interpreter and configures the virtual environment and executable script into a single "file" that users can click. If you really want that functionality, it's time to reach for some sort of compiled language (Go, C#, or Java if you don't need fine memory control; Rust if you do).
draco1986@reddit
Ive played around with Beeware for builds on windows and Linux systems for smsll apps at work. I really like it, but its still somewhat rough around the edges.
Appropriate-Dare-23@reddit
I have a production app written entirely in Python, and I can say that it was difficult at first, however once you understand the flow everything is easier, especially the updates.
marshaul@reddit
Personally, I just one pyinstaller to generate one file exes with all the resources baked in.
Yeah, they take a lot of space, but it's 2026, disk space is about the least precious commodity where I work.
And I have precisely zero problems with deployment. It's the easiest part of the process, I consider the project done when the code is done, and it's another part of why I do everything in Python now.
Silly-Extension3643@reddit
Unfortunately the same problem
Haunting-Shower1654@reddit (OP)
Glad it’s not just me then
geeeffwhy@reddit
as someone with almost 20 years of professional experience across many languages, let me assure you that the code is rarely the hard part of any of this. it’s the question of what to build, how to make that maintainable and cost effective, how to handle changes and customer communication, schedules, infrastructure, etc.
you might think of it like professional athletes; they get paid to practice and exercise and maintain their health. they _get_ to play in the games.
scrapheaper_@reddit
This is why DevOps is it's own specialism!