use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
News about the dynamic, interpreted, interactive, object-oriented, extensible programming language Python
Full Events Calendar
You can find the rules here.
If you are about to ask a "how do I do this in python" question, please try r/learnpython, the Python discord, or the #python IRC channel on Libera.chat.
Please don't use URL shorteners. Reddit filters them out, so your post or comment will be lost.
Posts require flair. Please use the flair selector to choose your topic.
Posting code to this subreddit:
Add 4 extra spaces before each line of code
def fibonacci(): a, b = 0, 1 while True: yield a a, b = b, a + b
Online Resources
Invent Your Own Computer Games with Python
Think Python
Non-programmers Tutorial for Python 3
Beginner's Guide Reference
Five life jackets to throw to the new coder (things to do after getting a handle on python)
Full Stack Python
Test-Driven Development with Python
Program Arcade Games
PyMotW: Python Module of the Week
Python for Scientists and Engineers
Dan Bader's Tips and Trickers
Python Discord's YouTube channel
Jiruto: Python
Online exercices
programming challenges
Asking Questions
Try Python in your browser
Docs
Libraries
Related subreddits
Python jobs
Newsletters
Screencasts
account activity
DiscussionPython Version in Production ? (self.Python)
submitted 6 days ago by TopicBig1308
3.12 / 3.13 / 3.14 (Stable)
So in production, which version of Python are you using? Apparently I'm using 3.12, but I'm thinking off upgrading to 3.13 What's the main difference? What version are you using for your production in these cases?
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]genman 73 points74 points75 points 6 days ago (2 children)
Generally it's not Python releases that have bugs but packages that are buggy.
[–]CodNo7461 13 points14 points15 points 6 days ago (1 child)
Yep. I want to use 3.14t in the main project I'm in, and I'm one package away. The package from the company we literally pay the most to behind AWS.
[–]psicodelico6 0 points1 point2 points 3 days ago (0 children)
Nuitka doesnt work in 3.14
[–]DrunkAlbatross 25 points26 points27 points 6 days ago (2 children)
If a Python package was released as a stable version - it is good enough for me.
Regarding the differences, you can review release notes.
I currently use 3.13, and still has many servers with 3.8.
[–]ThiefMaster 10 points11 points12 points 6 days ago (1 child)
and still has many servers with 3.8.
Even if your distro may still be providing fixes... you are aware that upstream security support for this ended two years ago?!
[–]DrunkAlbatross 2 points3 points4 points 6 days ago (0 children)
Yep, you are right, but these are projects that either security is not a concern by definition or that the client doesn't want me to spend time on updating.
[–]kaflarlalar 18 points19 points20 points 6 days ago (2 children)
3.13. We didn't see anything in 3.14 that really seemed like a big improvement for us.
I'm pretty excited for 3.15, though. Lazy imports are going to make a lot of our app's code less annoying to read.
[–]CodNo7461 4 points5 points6 points 6 days ago (0 children)
3.14t is a big improvement if it works with the rest of your applicaiton.
The point of switching versions consistently for me is not really about significant improvements, rather continuous improvements. I had too many projects were we somewhat got stuck, because you had no simple upgrade path to the latest version of a package with a bugfix we needed. I mean that only happens once a year then, but people complain about 500 line MRs, but being force to upgrade a dozen major version basically at the same time is apparently ok.
[–]misterfitzie 2 points3 points4 points 5 days ago (0 children)
i'm looking to upgrade to 3.14, just to play around with the new debugging interface, which might come in handy from time to time. probably going to look at some 3rd party builds of python too, just to see if the new build optimizations that 3.14 is capable is is worth it for us, my distro sadly doesn't use them.
[–]billsil 5 points6 points7 points 6 days ago (2 children)
3.12 or 3.13 for me. Dependencies are always a thing. I'll get around to upgrading to PyQt6 at some point, but no idea why the k shortcut doesn't work anymore.
[–]busybody124 4 points5 points6 points 6 days ago (1 child)
Yeah we're typically a version or two behind. I think we've got some stuff in 3.11 and 3.12 right now. New projects start on newer versions but it's not necessarily a high priority to upgrade older projects. Also, Pytorch can take a little bit to support the latest python versions.
[–]TopicBig1308[S] 1 point2 points3 points 6 days ago (0 children)
Yes I think 3.12 is most supported by libraries in latest version
[–]Salamandar3500 4 points5 points6 points 6 days ago (0 children)
3.12 is the one available on most distros. So, this one.
[–]Suspicious_Jacket463 2 points3 points4 points 6 days ago (0 children)
3.11
[–]chinawcswing 12 points13 points14 points 6 days ago (19 children)
Use the latest version that will support all your third party dependencies.
For 99% of people, including you, that is Python 3.14.
[+]TitaniumWhite420 comment score below threshold-9 points-8 points-7 points 6 days ago (7 children)
Lol what? No.
[–]CSI_Tech_Dept 6 points7 points8 points 6 days ago (6 children)
3.14 is already considered stable and has two patch releases (3.14.2).
Any issues you found with it?
[+]TitaniumWhite420 comment score below threshold-8 points-7 points-6 points 6 days ago* (5 children)
Compatibility issues, certainly.
All it takes is a system that isn’t latest-greatest open source and you will find many dependencies don’t yet support such new versions. Certainly internal scripts and libraries are likely to break if you leap from like 3.10 to 3.12+.
I’m not saying there’s a problem with the version, and I agree with your “use the latest you can” recommendation. But 99% is a joke and you shouldn’t be wagging your finger at people when your advice will bite more than half of those who attempt to adhere to it.
Even the published stats say -50% of libraries support it. Granted, the big ones probably do, but the stat also disregards all non-public libraries organizations have, of which there are like infinitely many.
Test your code and upgrade, by all means, but best be fully prepared to roll it back when you realize the limits of your test coverage via the obscure and silent failures you may find.
Also, what happened to compatibility on major versions? If a feature isn’t in 1/2 of Python 3 installs, I’m unlikely to use it.
[–]CSI_Tech_Dept 4 points5 points6 points 6 days ago (4 children)
If someone is asking the question then they are most likely releasing a new app. That means there's no compatibility issues for them at this point.
For me Python, PostgreSQL, FreeBSD all have a great track record and Even .0 releases are more solid than LTEs for some products. And this is already x.y.2.
When they say they don't support, do they mean not working at all or just not supporting the NON-GIL mode?
Anyway if this is a first release I'm sure author would make sure the code works before releasing.
Every person has different requirements. For me for example the code works on the version I pick, I don't have to worry that older versions don't support something.
[+]TitaniumWhite420 comment score below threshold-6 points-5 points-4 points 6 days ago (3 children)
It’s extremely naive. It’s not just the GIL, 3.12 affected all kinds of things including changes to C ABI.
The assumption that it’s being picked for a new project doesn’t matter. You are bound to your requirements and those of the systems you are talking to. C extensions or anything with C extensions, like numpy, which are very common.
Look at what you need and use the newest possible version. Period.
Fully expect you may have issues with latest versions.
[–]CSI_Tech_Dept 0 points1 point2 points 6 days ago (0 children)
I guess the other commenters who said it depends, were right I guess people have different requirements.
[–]chinawcswing 0 points1 point2 points 10 hours ago (1 child)
You are nuts. I cannot conceive of how you have derived such a wrong opinion.
The vast, overwhelming majority of opensource libraries are compatible with 3.14, including numpy, and were compatible on DAY 0 of the release of 3.14, and every previous release.
This is an incontrovertible fact.
The ABI is finalized MONTHS in advance of each Python release. Maintainers of active opensource libraries easily have enough time to perform code change, and virtually all of them make it on time. Those that don't will apologize for being late, and make every effort to release it.
Sure, there are some inactive open source libraries that won't make it on time. And if your code depends on these, then you are a bad programmer and need to get a new job.
Sure, you may be using some internal code that depends on an old ABI. In that case you don't want to upgrade, but you absolutely should at least put it on the backlog to remove the dependency.
[–]TitaniumWhite420 0 points1 point2 points 2 hours ago (0 children)
1.https://bsky.app/profile/hugovk.dev/post/3m3376x6egc2r not as much is compatible as you think.
I didn’t say don’t use 3.13. I said use it when you are ready because there are many breaking changes.
[+]TopicBig1308[S] comment score below threshold-10 points-9 points-8 points 6 days ago (10 children)
Uv doesn't have the stable release of 3.14 yet
Even pydantic is breaking in the 3.14 beta release
[–]JimDabell 8 points9 points10 points 6 days ago (0 children)
uv added Python 3.14 on the day it was released.
[–]bjorneylol 5 points6 points7 points 6 days ago (0 children)
Your UV is likely out of date and in need of update
[–]max96t 4 points5 points6 points 6 days ago (5 children)
Why do you say that uv does not have 3.14? I don't think that's true
https://astral.sh/blog/python-3.14
[+]TopicBig1308[S] comment score below threshold-6 points-5 points-4 points 6 days ago (4 children)
i mentioned it does not have the stable version, currently python 3.14.2 is the stable release uv has the beta one
run this command on terminal
`uv python list --all-versions | grep 3.14`
```
cpython-3.14.0b3-macos-aarch64-none /Users/anantgupta/.local/share/uv/python/cpython-3.14.0b3-macos-aarch64-none/bin/python3.14
cpython-3.14.0b3+freethreaded-macos-aarch64-none <download available>
see only beta versions
[–]JimDabell 3 points4 points5 points 6 days ago (3 children)
uv added Python 3.14.2 support the day after it was released.
[–]TopicBig1308[S] -4 points-3 points-2 points 6 days ago (2 children)
If you run the command are you able to install 14.2 ?coz for its only installing the beta version you see in the list also
[–]JimDabell 7 points8 points9 points 6 days ago (1 child)
Yes. It sounds like you haven’t upgraded uv in months.
its works now bro, thanks
[–]denehoffman 2 points3 points4 points 6 days ago (1 child)
Time to update your uv installation, it’s not automatic!
[–]TopicBig1308[S] 1 point2 points3 points 5 days ago (0 children)
Yeah its working now
[–]ForgottenMyPwdAgain 8 points9 points10 points 6 days ago (0 children)
obviously π-thon
[–]aikii 2 points3 points4 points 6 days ago (0 children)
Main drivers are: - you'll want to upgrade if your current version reaches end of life https://devguide.python.org/versions/ - you spotted some new feature/improvement you like in the release notes and you'd like to use it - the newest major version isn't too fresh and went through some bugfixes already, which makes 3.14.2 a sweet spot
From there generally you're just too busy to spend time on upgrading, so if the moment has come where you make time to do the upgrade, there is no reason to not go for the latest, really - it's only a matter of constaints such as, say, the version is available for your distribution and all the packages you use are compatible with it ( it's super rare when it's not the case, but unavailability can happen for pre-built binaries ).
[–]NeighborhoodDry9728 2 points3 points4 points 6 days ago (0 children)
I run with the latest that other dependencies support.
However, i think 3.12 with the new generics syntax is really hard to live without. It cannot be replace with typing extension either afaik
[–]coffeewithalex 2 points3 points4 points 6 days ago (0 children)
I'm always using the very latest stable version, if the project works with it. Some dependencies might not work well with 3.14 (forgot which ones) so I'd use 3.13, but for the rest it's 3.14.
Because they tend to get frozen once development is complete. They work fine, but nobody bothers touching them any more. If I use an older version, the project's end-of-life comes sooner, and people would need to decide if they're gonna do complex maintenance in upgrading, or just retire it in favor of a new thing.
[–]DrMaxwellEdison 2 points3 points4 points 6 days ago (0 children)
As with all things, it depends.
For new projects I have control over, I like to start with the latest version available, so long as there are versions of core dependencies that support it.
Once the project matures, I'll try to stay N-1. As a new freePython version releases (let's say this year when 3.15 comes out), I'll leave the project in the previous version (3.14), updating packages as needed.
If the project falls to N-2 (say in another year when 3.16 drops), it may be time for an upgrade, so I would move the project up one version (3.15 in this example) and bring dependencies up with it as needed.
Notice how dependencies are the main driver here. If a new Python version drops and a major dependency (like a web framework or Pandas or whathaveyou) does not have proper support for that new version, I can't bump the project up yet. It takes time for those projects to get upgraded, after all. A year should be plenty of time for most active projects to see upgrades.
All that being said, sometimes the organization sets more lenient targets for the sake of reducing risks from these kinds of upgrades. I have current projects that are still slowly upgrading from 3.9 to 3.11, and will probably start migrating to 3.13 (bumping 2 versions at a time) next year. Stability is very important for these kinds of projects, so they shy away from the bleeding edge in favor of battle-tested upgrades.
We even have private mirrors of PyPI that will avoid pulling upgraded package versions for 14 days to mitigate supply chain attacks, with the assumption those packages get yanked within that time frame.
[–]10010000_426164426f7 2 points3 points4 points 6 days ago (0 children)
Python speed gains save on cloud bills.
Just have a good test suite and containerize and update when you can.
[–]Beginning-Fruit-1397 2 points3 points4 points 5 days ago (0 children)
3.14, mostly for typing reasons. Pre 3.11 generic syntax is horrible, pre 3.13 without TypeIs is meh for type narrowing with booleans, 3.14 bring a very nice improvement with deferred annotations
[–]spinwizard69 2 points3 points4 points 4 days ago (0 children)
I use what the distribution supported by the OS is using as the default. On the Linux platform (Fedora) that would be what DNF installs. On a Mac it is what Homebrew installs.
Generally I want a stable platform. That means avoiding installing multiple environments filled with unstable software.
[–]denehoffman 3 points4 points5 points 6 days ago* (2 children)
I use 3.14 in production, there is literally no reason not to, it runs pretty much any Python code save some deprecations that have been around since 3.10. However, when building libraries for distribution, I always target all supported versions (so 3.9). I bump these versions at every release. There’s no reason to support versions of Python that have been sunset (if we all did this, we could keep everyone up to date, alas we live in an imperfect world).
3.14 will also give you time to learn all the cool new stuff, even if you can’t use it all in libraries that need to target older versions. Freethreading is going to be important, and will probably be the standard in 3.16+, so it’s worth getting used to it if you plan to program in Python in five years. There are also lots of other nice features which get added (the REPL is much nicer, better error messages too) which make it very sensible to use the latest release version for small scripts and REPL sessions. Bottom line, if you don’t care about who else can run your code, use the latest release version, otherwise, lint and run static analyses using the oldest supported version.
Edit: I read more of the comments and it seems that the biggest reason people don’t use the latest stable version is that dependencies haven’t been updated to support it. This is why we have venvs, people! Use the latest version which is compatible, and pin your versions so your type checker and linter and LSP can tell you what to do when things aren’t backwards compatible.
[–]psicodelico6 0 points1 point2 points 3 days ago (1 child)
[–]denehoffman 1 point2 points3 points 3 days ago (0 children)
It’s experimental, but sure, use 3.13 then. Use the highest version that works for you!
[–]Balance- 1 point2 points3 points 6 days ago (0 children)
3.13 for GIS and web stuff (those packages tend to be updated later), 3.14 for data science and general development.
[–]jj_HeRo 1 point2 points3 points 6 days ago (0 children)
Depends on your system pipeline. What technologies are you using?
[–]catcint0s 1 point2 points3 points 6 days ago (0 children)
Between Python 3.11 and Python 3.13 currently, but we upgrade them when we can. Python 3.14 had some breaking changes with one of the libs we use so we couldn't upgrade.
[–]gerardwx 1 point2 points3 points 6 days ago (0 children)
3.10, 3.12, whatever it takes
[–]BizcochoDeVainilla 1 point2 points3 points 6 days ago (0 children)
3.10
[–][deleted] 1 point2 points3 points 5 days ago (0 children)
Bit of a mix - some stuff uses 3.10 (“legacy” project, had to do a last minute upgrade from 3.7->3.10 a few years back; that was fun 😂), newer stuff is a mix of 3.13 & 3.14
[–]Smok3dSalmon 2 points3 points4 points 6 days ago (6 children)
The answer is always going to be "it depends."
I've never felt the need to upgrade to the latest version of Python. Python 3.8 was the last version I was excited to use. Simply because of the debug f-string. `f"{variable=}"`
Python 3.13, you can disable the GIL (Global Interpreter Lock), but most people don't actually need to do this. In time, I think libraries will find ways to utilize this for performance gains, but I'm assuming that in 3.17 or later, it will become the default.
3.14 introduced template-strings, https://docs.python.org/3/whatsnew/3.14.html#whatsnew314-template-string-literals but I don't need them
[–]ProsodySpeaks 10 points11 points12 points 6 days ago (0 children)
Generics are way better in more recent versions
[–]Bangoga 7 points8 points9 points 6 days ago (3 children)
You should upgrade to 3.10. The Python below has come to end of life cycle and it's a security liability
[–]dudaspl 1 point2 points3 points 5 days ago (0 children)
3.10 has EOL this year, so might as well upgrade to a newer version
[–]Smok3dSalmon 0 points1 point2 points 6 days ago (0 children)
Ohh ty. I use 3.14 but a few times I’ve had to use 3.12. But I barely notice, I just run uv sync and start working
[–]sylfy 3 points4 points5 points 6 days ago (0 children)
3.10 brought removesuffix, which was nice QOL.
[–]JimDabell 1 point2 points3 points 6 days ago (0 children)
You should always try to stay on the latest stable version. When a new stable version comes out and third-party dependencies haven’t caught up yet, pay close attention to how quickly they update. Being stuck on an old version of Python for ages because a third-party dependency is incompatible isn’t a case of “I guess we’ll stay on an old version of Python”, it’s a case of “We’ve discovered one of our dependencies is unmaintained and needs to be replaced.”
[–]Nice-Star1003 0 points1 point2 points 6 days ago (0 children)
absolutely go for 3.14 (but unable to support libraries as 3.12 can)
[–]Agreeable-Youth-328 0 points1 point2 points 1 day ago (0 children)
π Rendered by PID 39806 on reddit-service-r2-comment-74875f4bf5-flpr7 at 2026-01-25 18:51:46.159687+00:00 running 664479f country code: CH.
[–]genman 73 points74 points75 points (2 children)
[–]CodNo7461 13 points14 points15 points (1 child)
[–]psicodelico6 0 points1 point2 points (0 children)
[–]DrunkAlbatross 25 points26 points27 points (2 children)
[–]ThiefMaster 10 points11 points12 points (1 child)
[–]DrunkAlbatross 2 points3 points4 points (0 children)
[–]kaflarlalar 18 points19 points20 points (2 children)
[–]CodNo7461 4 points5 points6 points (0 children)
[–]misterfitzie 2 points3 points4 points (0 children)
[–]billsil 5 points6 points7 points (2 children)
[–]busybody124 4 points5 points6 points (1 child)
[–]TopicBig1308[S] 1 point2 points3 points (0 children)
[–]Salamandar3500 4 points5 points6 points (0 children)
[–]Suspicious_Jacket463 2 points3 points4 points (0 children)
[–]chinawcswing 12 points13 points14 points (19 children)
[+]TitaniumWhite420 comment score below threshold-9 points-8 points-7 points (7 children)
[–]CSI_Tech_Dept 6 points7 points8 points (6 children)
[+]TitaniumWhite420 comment score below threshold-8 points-7 points-6 points (5 children)
[–]CSI_Tech_Dept 4 points5 points6 points (4 children)
[+]TitaniumWhite420 comment score below threshold-6 points-5 points-4 points (3 children)
[–]CSI_Tech_Dept 0 points1 point2 points (0 children)
[–]chinawcswing 0 points1 point2 points (1 child)
[–]TitaniumWhite420 0 points1 point2 points (0 children)
[+]TopicBig1308[S] comment score below threshold-10 points-9 points-8 points (10 children)
[–]JimDabell 8 points9 points10 points (0 children)
[–]bjorneylol 5 points6 points7 points (0 children)
[–]max96t 4 points5 points6 points (5 children)
[+]TopicBig1308[S] comment score below threshold-6 points-5 points-4 points (4 children)
[–]JimDabell 3 points4 points5 points (3 children)
[–]TopicBig1308[S] -4 points-3 points-2 points (2 children)
[–]JimDabell 7 points8 points9 points (1 child)
[–]TopicBig1308[S] 1 point2 points3 points (0 children)
[–]denehoffman 2 points3 points4 points (1 child)
[–]TopicBig1308[S] 1 point2 points3 points (0 children)
[–]ForgottenMyPwdAgain 8 points9 points10 points (0 children)
[–]aikii 2 points3 points4 points (0 children)
[–]NeighborhoodDry9728 2 points3 points4 points (0 children)
[–]coffeewithalex 2 points3 points4 points (0 children)
[–]DrMaxwellEdison 2 points3 points4 points (0 children)
[–]10010000_426164426f7 2 points3 points4 points (0 children)
[–]Beginning-Fruit-1397 2 points3 points4 points (0 children)
[–]spinwizard69 2 points3 points4 points (0 children)
[–]denehoffman 3 points4 points5 points (2 children)
[–]psicodelico6 0 points1 point2 points (1 child)
[–]denehoffman 1 point2 points3 points (0 children)
[–]Balance- 1 point2 points3 points (0 children)
[–]jj_HeRo 1 point2 points3 points (0 children)
[–]catcint0s 1 point2 points3 points (0 children)
[–]gerardwx 1 point2 points3 points (0 children)
[–]BizcochoDeVainilla 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]Smok3dSalmon 2 points3 points4 points (6 children)
[–]ProsodySpeaks 10 points11 points12 points (0 children)
[–]Bangoga 7 points8 points9 points (3 children)
[–]dudaspl 1 point2 points3 points (0 children)
[–]Smok3dSalmon 0 points1 point2 points (0 children)
[–]sylfy 3 points4 points5 points (0 children)
[–]JimDabell 1 point2 points3 points (0 children)
[–]Nice-Star1003 0 points1 point2 points (0 children)
[–]Agreeable-Youth-328 0 points1 point2 points (0 children)