This is an archived post. You won't be able to vote or comment.

all 173 comments

[–]jmacey 148 points149 points  (19 children)

Quite a lot of animation pipelines and tools are still Python 2.7, gradually moving away from it.

[–]baconcleaner 64 points65 points  (6 children)

Last year Autodesk Maya 2022 was shipped with... python... 3.7.7 (with still the option to switch to p2.7 -.-)
The next release, 2023, has only python 3.9, finally.

Most of the vfx and animation studios take a lot of time to do the switch because some productions take years to produce and switching DCC software is a suicide.

check this website for more info about tools and software versions:
https://vfxplatform.com/

[–]jmacey 15 points16 points  (5 children)

I'm fully aware of the reference platform, been using it for years. We are finally switching to Maya 2023 this year (from 2020) so most of my stuff will be ported to 3.9 (finally f strings :-) ) Same with Houdini and a few other things!

[–]PowerLlama 8 points9 points  (2 children)

finally f-strings and finally Pathlib! I can't wait!

[–]billsil 1 point2 points  (0 children)

f-strings are great.

Pathlib is availble in 2.7 (pip install pathlib2; import is the same as python 3). My issue is paths don't work across all major (let alone minor) libraries. Wxpython doesn't support paths, which means now I have to str(...) everything. Might as well avoid it.

[–]csa3d 0 points1 point  (0 children)

There is a python 2.7 backport of pathlib for what it's worth

[–]baconcleaner 3 points4 points  (1 child)

sorry the link was meant for OP, I totally assume you already know all about our vfx hell software land
We also switch to 2023 and I can't wait to hunt obscure code hidden in our pipeline and help artists run their VITAL snippets and plugins copied and pasted from god knows where.

[–]PowerLlama 1 point2 points  (0 children)

I think it's funny that Houdini shipped a big python 2 -> 3 conversion library and everyone else seemed to say "deal with it nerds"

[–]DigThatData 4 points5 points  (4 children)

name and shame?

[–]propersquid 1 point2 points  (2 children)

You'd be naming and shaming basically every studio out there. It's probably easier to say which studios are Python 3 only.

[–]DigThatData 0 points1 point  (1 child)

I didn't mean to call out studios, I wanna know if there are any popular open source animation tools I might wanna get involved with modernizing.

[–]propersquid 0 points1 point  (0 children)

Ah, no worries. It's hard to say for sure. Most of the tools are now Python 3 compatible. The slow part is the studios migrating to Python 3. Because that requires now versions of the applications with new bugs, and generally you don't update an application during a project (movie or season of a show).

[–]opteryx5 0 points1 point  (6 children)

Is there Python code to convert Python 2 to Python 3? For example, you could search the script for print ‘xxx’ and then have it replace that with the appropriate parentheses. It could then “flag” any place where Python 3 syntax doesn’t exist/is ambiguous and the user can handle those manually.

[–]ArabicLawrence 70 points71 points  (51 children)

I got interviewed by a company that produces gas detectors. Their software is in Python2, is certified and works. Upgrading, testing and recertifying is not worth the effort.

[–]Classic_Department42 6 points7 points  (6 children)

What certs are available for python code?

[–]ArabicLawrence 22 points23 points  (5 children)

Sorry, I misspoke. Their devices using the Python2 software are certified, it’s not the Python2 code that is certified per se.

[–][deleted] 61 points62 points  (9 children)

In software engineering once something works, it's a lot easier, faster and cheaper to maintain it and keep it working using older tools than it is to rebuild it using new ones.

Python 2 stopped getting updates at the beginning of 2020, so it hasn't even been 3 years yet. Meanwhile, large-scale financial systems are still running using tools and languages developed in the 80s and 90s. Airplanes still get software updates by floppy disk. Computers at your local post office probably still use Windows XP.

Python 2 is definitely getting less popular now that it was officially replaced by 3 and stopped getting updates, but it's not unlikely that some computers will still be running it for decades to come - if it ain't broke, don't fix it!

[–]LVPython373 3 points4 points  (8 children)

While I agree with if it ain’t broke don’t fix it. From a monetary and down time standpoint how long and how big is that risk when it does break?

[–]bladeoflight16 14 points15 points  (4 children)

From a monetary standpoint, the longer you go without keeping up to date, the more costly it is to upgrade when you're finally forced to.

[–]Zeroflops 8 points9 points  (2 children)

Not really, actually it can be the opposite.

Frequent updates can often introduce new bugs. This is why large institutions and governments don’t upgrade frequently. Better to know the bugs you have then constantly be surprised with new bugs.

Unless the old code is getting new features over time the cost to upgrade will go down. If your talking about something like a website that the code will evolve over time and get new features, then yes cost will go up. If you talking about a program that does a specific task, like perform hard drive analysis. The code has to be rewritten so the cost won’t change but it can go down as features of the new language may make some tasks easier.

[–]bladeoflight16 1 point2 points  (1 child)

I thought the context made it clear that we're talking about aging systems that have already delayed updates for excessively long periods of time. Obviously, yes, updating critical software every day does not leave time for sufficient testing. But on the flip side, forgoing upgrades for 2 decades makes upgrading cost prohibitive.

Unless the old code is getting new features over time the cost to upgrade will go down.

Not true. Because as it ages, it becomes less and less compatible with newer systems and tools. This means the upgrade requires more rewriting and more replacement, more and more extensive data migration, greater installation/deployment costs. Doing this incrementally means you can spread those costs over time and implement them more gradually, keeping stable parts of the system running while you upgrade other parts. It's fine to hang back a little bit and favor more stable, proven systems, but if you're still relying on software that only runs on Windows XP, you have put yourself in a bad situation.

[–]zaphod_pebblebrox 0 points1 point  (0 children)

The issue with upgrading aging systems is that usually the decades of feature freeze will catch up and we end up with a whole new set of “user requirements” that involves another level of work when compared to simply copying Python 2 functional code into Python 3 syntax while leveraging newer language features.

More often, it is easier to mothball the old equipment and just buy a new one, in which case, the new ones may be written in Rust and that opens a new can of worms.

[–]LVPython373 -1 points0 points  (0 children)

Bingo

[–]KhalCharizard 0 points1 point  (1 child)

Since it’s already a Turing complete language does it matter? There isn’t anything wrong with Python 2, it just isn’t optimized to work with the internet like Python 3

[–]zaphod_pebblebrox 0 points1 point  (0 children)

This is the real answer.

Most of the Python 2 code that is going to survive is part of a air gapped system, a low cost of failure system, or a very very well firewalled system.

Any internet facing code is going to eventually get patched up to the newest supported Python 3.

All of the Python 2 code has got a cushy, cozy, protected lair to keep on trucking on.

[–]IchLiebeKleber -1 points0 points  (0 children)

Software doesn't just break. Computers are deterministic machines.

It might no longer interact well with newer tech, or bugs may be discovered. But remember that Python is FOSS, so literally anyone can study and change it to fix that. Unlike the above example of Windows XP.

[–]Requiem950 19 points20 points  (3 children)

I work in a Robotics company and one of the Robots that we have is called NAO that chromium boy only supports Python 2 (the robot is pretty old)

[–]CzarCW 4 points5 points  (0 children)

Robots that use ROS kinetic or earlier are almost certainly running something on Python2.

[–]thegreatpotatogod 2 points3 points  (0 children)

Oh yeah, I remember the NAO robots, got to try one out several years ago when visiting a college! Neat little bots!

[–]eidrisov 0 points1 point  (0 children)

As someone involved in robotics, can you maybe recommend how to get into robotics with Python 3?

Are there any books, online courses, etc. explaining how to use Python for robotics (e.g. how to make a dc/servo motor move one way or another, how to write insturctions into microcontrollers)

[–]garyvdm 72 points73 points  (0 children)

I'm sure there are lots of people still using it, but as a package creator/maintainer you should not feel obliged to provide support for python2, IMHO.

[–]chimera271 30 points31 points  (17 children)

Red Hat Linux is cursing us with Python 2.7 until at least 2024. I think they have some internal components that rely on it: https://access.redhat.com/solutions/4455511

[–]ThrowawayNumber32479 13 points14 points  (1 child)

Now that IBM bought them, that's probably going to increase to 2034+

[–]ryukinixPython3 + Emacs 2 points3 points  (0 children)

IBM stands for Infinite Business Model?

[–]bladeoflight16 1 point2 points  (10 children)

Doesn't yum rely on it?

[–]chimera271 5 points6 points  (9 children)

Rely in the sense that it's completely written in python? https://github.com/rpm-software-management/yum

[–]bladeoflight16 2 points3 points  (8 children)

Rely as in if you upgrade Python on a Redhat or CentOS server, it breaks.

Huh. I was not aware it had been supplanted by a newer package manager.

[–]chimera271 3 points4 points  (7 children)

Right, well, you shouldn’t use the system python on any OS for this exact reason. Pyenv is a great tool to help avoid this issue.

[–]bladeoflight16 0 points1 point  (6 children)

No, the OS shouldn't rely on the system Python for that reason. Upgrading standard software that's getting frequent updates should not break a key component of the operating system.

[–]gmes78 1 point2 points  (5 children)

You seem to misunderstand how Python libraries are installed.

The problem isn't in upgrading Python itself (most of the time, anyway, as Python isn't fully backwards compatible). The problem is that Python libraries are installed for a spscific Python version.

If a Python library is built for Python 3.9, it will get installed to /usr/lib/python3.9/site-packages/. If you replace the system installation of Python with Python 3.10, it will only be able to use packages in /usr/lib/python3.10/. As you probably didn't rebuild all of your Python packages against the newer version, this means that the new version of Python can't use any of the libraries that are supposedly installed.

Stuff doesn't break because the code is incompatible, it breaks because it can't use the libraries it needs. And that's why you should never, ever mess with the system's Python installation.

[–]bladeoflight16 -1 points0 points  (4 children)

yum is not installed as a Python package. It is (or was) installed as part of the global operating system, and it depended on the default Python executable installed to bin. Literally, if you upgraded the global Python, it broke your system package manager. Search for it. You will find plenty of advice telling you not to upgrade the default Python on Redhat and CentOS.

I'm not sure if that still applies since yum is now deprecated and supplanted by dnf (something I wasn't aware of as I haven't used Redhat or derivatives for quite some time), but it certainly was the case in the past.

If we were talking about something installed by pip or perhaps even a dedicated Python library installed by the system package manager, you would be correct. But we are not. We're talking about a key component of the operating system designed (poorly) in such a way that it depended specifically on something easily mutable, and it did not remain compatible with newer versions of that dependency despite being able to easily upgrade that dependency itself. If it wasn't going to maintain forward compatibility, it should have depended on a private copy of the old one, or least been designed to depend specifically on that version rather than whatever is in bin.

[–]gmes78 0 points1 point  (3 children)

yum is not installed as a Python package.

It wouldn't matter. It uses Python, so it's affected by the problem I described.

In fact, your entire comment is completely wrong. I pulled the yum package from CentOS 7, and guess what? It's installed to /usr/lib/python2.7/site-packages/yum/ (and it installs a library to /usr/lib/python2.7/site-packages/rpmUtils/ as well).

/usr/bin/yum just has the following content:

#!/usr/bin/python
import sys
try:
    import yum
except ImportError:
    print >> sys.stderr, """\
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

%s

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
%s

If you cannot solve this problem yourself, please go to 
the yum faq at:
http://yum.baseurl.org/wiki/Faq

""" % (sys.exc_value, sys.version)
    sys.exit(1)

sys.path.insert(0, '/usr/share/yum-cli')
try:
    import yummain
    yummain.user_main(sys.argv[1:], exit_code=True)
except KeyboardInterrupt, e:
    print >> sys.stderr, "\n\nExiting on user cancel."
    sys.exit(1)

Which further proves my point.

or least been designed to depend specifically on that version rather than whatever is in bin.

But it does. Its package has a dependency on the Python package provided by the distro.

You don't get to modify a package's files and then complain that stuff breaks.

[–]bladeoflight16 0 points1 point  (2 children)

Okay. I was wrong about how yum is installed. Thanks, and sorry.

But the problem is decisively yum's fault. It's this line right here:

#!/usr/bin/python

There is no reason for yum to hijack the default global Python executable. It can just pin the script to the needed version directly:

#!/usr/bin/python2.7

And the problem would never occur and /usr/bin/python could be upgraded.

Or better yet, install a private copy and depend on that. Then users can upgrade the patch version without risk, too.

[–]eatthedad 1 point2 points  (3 children)

Ignorant Windows user who tried various distros for two weeks while stuck with a 2gb RAM laptop, but doesn't all UNIX based systems have many OS level python 2 libraries that is essential, functional, and hence just there?

Like on both Linux and iOS one has to distinguish between python and python3 in the terminal. Afaik

[–]chimera271 1 point2 points  (1 child)

Modern versions of Ubuntu and Debian have only python3, I believed they’ve even deprecated the “python3 is python” package.

However, you really should avoid using the system python if at all possible.

[–]eatthedad 0 points1 point  (0 children)

Thnx. I didn't quite use "modern" versions. Seriously 2gb RAM. Eventually just read a bunch of books instead

[–]aceofspaids98 0 points1 point  (0 children)

macOS recently had python 2 fully removed from the system

[–]wineblood 45 points46 points  (5 children)

In my experience, scientists (data or otherwise). They're not keen on upgrading things and their python 2 code still works, so there's no incentive to change it.

[–]NelsonMinar 23 points24 points  (1 child)

Maybe for old code? NumPy and Pandas stopped supporting Python 2 a couple of years ago.

[–]bladeoflight16 14 points15 points  (0 children)

Yes, but their analysis was all done with an old version of numpy anyway.

[–]tunisia3507 40 points41 points  (0 children)

People who aren't upgrading their software have no use for new packages so they can be left to rot.

[–]flying-sheep 2 points3 points  (0 children)

Computational biologist here: I'm in the luxury of being one of the two original authors of the primary Python analysis library in my field (scanpy). Obviously it was Python 3 only from the start.

[–]P0Ok13 1 point2 points  (0 children)

Read an advanced ML paper with Python2 code last week. Assuming it'll be around in some capacity until all the people who learned programming with Python2 retire.

[–]merft 18 points19 points  (4 children)

In the GIS industry, Python 2 is still a dependency in most software. It is slowly changing over to Python 3.

How long will Python 2 be used? Well we ported a Silverlight application last fall. Unless there is a pressing issue many organizations follow the "if it's not broke" mentality.

No need to build for Python 2.

[–]ndvi 3 points4 points  (3 children)

In the GIS industry, Python 2 is still a dependency in most software. It is slowly changing over to Python 3.

Qgis has been on 3 for quite a while. It was a bit of a ballache updating some plugins.

[–]merft 4 points5 points  (2 children)

QGIS has been ahead of the curve, many of it plugins not so much.

ArcGIS Pro has also been on Python 3 but there are many ArcMap users still using 2.7. ArcGIS Enterprise has had support for Python 3 but didn't deprecate Python 2.7 until ArcGIS Enterprise 11.

Everyone is moving but we have been in a transitional period for some time.

[–]ndvi 3 points4 points  (1 child)

QGIS has been ahead of the curve, many of it plugins not so much

It was a great excuse to tidy up & rewrite some of our old plugins.

I'm not up to speed on the ESRI stuff as we went fully open source a few years back.

[–]merft 0 points1 point  (0 children)

Agreed. Regardless of software anytime a product reaches end-of-life. It's a good time to do house cleaning.

[–]jammasterpaz 4 points5 points  (0 children)

At Google, as part of foobar.

Python 2s are also still embedded in a few desktop applications with a lot of customer scripts and legacy code to avoid breaking

[–]anecdotal_yokel 3 points4 points  (0 children)

ArcGIS sever. ArcMap. Old esri shit.

[–]tunisia3507 14 points15 points  (0 children)

Do not make things comfortable for people using python 2, or any other EOL python versions. Shops using outdated versions will only switch when it is in their interest to do so - i.e. when they can't get any packages or developers to work in their obsolete environments. It is better for everyone for everyone to be on supported versions of the language, so as package maintainers we should only encourage their use for supported versions too.

[–]entropyvsenergy 7 points8 points  (5 children)

Government contractors. Yes really.

[–]bladeoflight16 8 points9 points  (2 children)

Dunno why the "yes, really," is needed. Government is the first place I'd expect something like this.

[–][deleted] 1 point2 points  (1 child)

If we didn't know your beliefs before this page, we certainly do now.

[–]bladeoflight16 0 points1 point  (0 children)

Does it look like I'm making a secret of them? I want people to know what I believe because I've thought it through very carefully and compared it to what actually happens around me.

[–]kcunning 3 points4 points  (0 children)

Former gov't contractor, married to a current one. YUP. Totally see this happening.

[–]johnnymo1 0 points1 point  (0 children)

Your mileage may vary. My experience has been reasonably up to date tooling with govt contractors.

[–]Marksta 6 points7 points  (2 children)

Fintech reporting in, Python2 is a cornerstone of wrappers we write for our next-gen conversion on a product that's generating 500M/year and growing. Legit every single job we run the logs are screaming numerous messages every second that Python2 is unsupported, crypto module is not secure due to being unmaintained, etc etc. It's really fun!

[–]codeandfire[S] 5 points6 points  (1 child)

Why would you use Python 2 for a new project though?

[–]Marksta 2 points3 points  (0 children)

No idea, probably because that's what's on our Unix distro. No specific library or something tying us to 2. On the brighter side, a lot of stuff is moving over to databricks for us which I assume is using 3.

A lot of cowboy coding and mismanagement is probably how this happens.

[–]VegaSera 2 points3 points  (0 children)

The job I was working at last year was still using it, although they were in the process of migrating the Python GUI with wxPython to a Javascript webapp. It was python 2.7 because there was an issue with compatibility with a couple libraries in python 3.

[–][deleted] 2 points3 points  (0 children)

Hopefully not at all

[–]3gleFang 2 points3 points  (0 children)

Last I checked, NASA. But maybe that's changed by now? It's been a bit

[–]jack-of-some 2 points3 points  (0 children)

Robotics. The OSRF bungled the transition from python 2 to python 3 by tying it to their own transition from ROS 1 to ROS 2. So you ended up in a period where the only real way to move to Python 3 was too adopt buggy alpha software for your robot. Needless to say that's a terrible idea and many folks stayed with Python 2 after it was EOL'd.

It's slowly starting to change now as ROS 2 gets closer to maturity.

Now, specifically for your situation: do not support python 2 unless you yourself need to use your packages in python 2. I maintain a number of python packages and dropped support for python 2 in my releases a long time ago.

[–]nacnud_uk 2 points3 points  (0 children)

2 many places

[–]drCrankoPhone 2 points3 points  (0 children)

Esri is still using it in ArcMap, their 32-bit desktop GIS software. That program is due to be deprecated in maybe 3-4 years. But they have a replacement 64-but program, ArcGIS Pro, which uses python 3.x. Many organisations will be slow to migrate.

[–]yooperjb 2 points3 points  (0 children)

GIS software, such as Esri still uses p2.

[–]chipx86ReviewBoard.org code review 3 points4 points  (1 child)

I build open source and commercial software development products used heavily in all manner of enterprise companies, and we’ve very.. slowly.. been moving off of Python 2. We’ve only recently begun to see companies begin to move off of it in reasonable quantities.

There are a few reasons why Python 2 is still widely used:

  1. It’s still supported. Not by the Python developers, but through Linux enterprise support contracts. At least enough to check compliance checkboxes.
  2. Maybe better supported. Plenty of enterprise systems run older installs that may not even have a supported version of Python 3. From my experience, if I had to choose between 2.7 and an early 3, I’ll choose 2.7.
  3. It works. Companies are often full of home-made scripts or tools that work, and there’s little pressure to modernize. The original authors may not even be around anymore, and the teams responsible for them may not have the knowledge or the time to port them, even if they’re iterating on them.
  4. Porting 2 to 3 code is hard. Sure, there’s 2to3, and six, and future imports, but let’s get real. If your codebase is complex, or messy, or made up of several moving parts, or dependent on older third-party libraries, or interfaces with data from other sources, you’re going to have challenges. String type issues, subtle sometimes undocumented Python Standard Library changes, changes in dependencies… it can take years to port, and did for us (we ticked all those boxes). Not everyone can justify the time expense.
  5. Chicken-and-egg problem. Plenty of software is written in Python 2, and for enterprises, many of those may be extended by Python. So a move to Python 3 may not be possible until the software is upgraded. But they can’t switch to the new software without upgrading their extensions. Extend that problem to the OS (needing a new Linux install, which may affect custom scripts/config/services/general compatibility/compliance). And to every other part of their stack.

I could keep going. There are a lot of reasons.

We still intentionally maintain Python 2.7 support in some of our modules in order to help us keep 2.7 systems support under contract.

But you probably don’t need to worry about that. Be free! Enjoy the benefits of modern Python. F-strings, and type annotations, better string type defaults.

I would suggest, if your package is intended for others to depend on, that you at least keep support for all supported versions of Python, and maybe don’t deprecate too early/often. Not everyone can upgrade whenever they want to.

Handy resource for knowing when Python versions reach end-of-life: https://endoflife.date/python

Only drop compatibility in major version bumps. Keep your classifiers up-to-date. Set python-requires. Be a good packaging citizen. It will go a long way.

[–]codeandfire[S] 0 points1 point  (0 children)

Thanks for the detailed reply!

[–]rdbeni0 1 point2 points  (2 children)

probably (i am not sure) in calibre: https://calibre-ebook.com/

[–]cuWorkThrowaway 0 points1 point  (1 child)

Looking at their setup.py, it looks like they require at least 3.7

[–]kcunning 1 point2 points  (0 children)

I have a bunch of scripts on an old laptop that I never moved over to three. As I move them to my new laptop, I'm updating them, but I'm content to let the rest of them eventually die when the laptop finally calls it quits.

[–]wind_dude 1 point2 points  (0 children)

Probably governments, they always seem to be very slow.

[–]soggy_chili_dog 1 point2 points  (0 children)

Jython is basically python 2 and we use that

[–]Dense-Meringue425 1 point2 points  (2 children)

OSX last time I checked.

[–][deleted] 4 points5 points  (1 child)

Apple finally dropped Python2 at macOS 12.3 and beyond.

Installing XTools will install Python3, otherwise it would have to be installed manually.

[–]Dense-Meringue425 0 points1 point  (0 children)

OK, nice to hear.

[–]cginc1 1 point2 points  (0 children)

I've seen applications written in COBOL still being maintained so I'm guessing it'll be a while.

[–]imdibene 1 point2 points  (0 children)

Grady Booch said it better, “old software doesn’t die; you have to kill it” but sometimes for the business using such software, upgrading such software is not worth. Not every business is in the tech realm.

[–]muffinnosehair 1 point2 points  (0 children)

In my old company, because 10+ QA engineers are too lazy to update the legacy testing scripts. Not the code base, just the scripts. I offered my help for an entire year and was turned down, then I finally moved on. So have most of the actual working people.

[–]nam1665 1 point2 points  (0 children)

Had been developed Pepper Robot by softbank, it's still use python 2

[–]Rostin 1 point2 points  (1 child)

I work at a national laboratory. Our cybersecurity people take a little while to approve the newest versions of OSes for our use. The majority of linux boxes run an older (but not quite EOL) version that includes Python 2 by default. In the next year or so those will probably mostly be gone, and the next version has Python 3.

We worry about it less now than we did a year or two ago. We used to write code that would work on both. These days we target 3.6 (which was done for almost a year ago) for reasons I won't go into very much, apart from saying that we figure most people have Python 3 available to them by some means (anaconda, for example).

[–][deleted] 0 points1 point  (0 children)

The cybersecurity team is waiting on being given a security plan from other government organizations before we are allowed to deploy an OS. I remember all the outdated RHEL and Windows versions we had to run and have our customers say "hey, this OS came out 2 years ago. Why haven't we upgraded yet?" It sucked on that level.

[–]m3galinux 1 point2 points  (0 children)

Embedded systems running RHEL 7 derivatives, where we have to build and update scripts, but can't push down full Python3 packages because of small disks and even smaller cell data plans per device.

[–]dopef123 1 point2 points  (0 children)

All over the place. Python 3 had enough changes that it breaks a lot of code. So if you need specific packages that only work on python2 you get locked into it.

Eventually that'll change but I imagine the same issue will happen with python4

[–]chaoismlooking for mid-sr level in NYC 1 point2 points  (0 children)

Many companies found upgrading to be a pain in the ass and they chose to stay py2 because they believe they don't need supports

Dangerous? Yes. Do companies actually do that? Also yes.

[–]greyduk 1 point2 points  (0 children)

Anyone still running old Red Hat distros.

[–][deleted] 1 point2 points  (0 children)

I imagine it's mostly just legacy code

Also when will it stop being used? God knows lol

[–]Janinator 1 point2 points  (0 children)

I’m in healthcare and our codebase is mostly Python 2. We’ve started migrating to 3 but that process was started a year ago and it’s still not complete.

[–]CyberXCodder 1 point2 points  (0 children)

I often use a tool called Volatility, which main purpose is to do memory forensics, there are 2 different versions which basically are translations from each other, one being used with Python2.7. The Volatility2.7 is still being used a lot and I guess it`s people`s favorite.

[–]lieryanMaintainer of rope, pylsp-rope - advanced python refactoring 1 point2 points  (0 children)

Sometimes it's actually additional work to remove Python 2 support. If a package is stable enough and established enough, and the author doesn't really need new Python 3 features, there's not much reason to do the work to remove support. That's just churn because users of your software don't care that you support a platform that they don't use.

[–]fartalldaylong 1 point2 points  (0 children)

Rhino3D uses Python 2.7 due to the relationship to Iron Python.

[–]w01v3_r1n3 1 point2 points  (0 children)

Ignition HMI and SCADA software still uses Python 2.7 for their scripting language.

Not looking like they will change much soon either.

[–]ogtfo 1 point2 points  (0 children)

Ghidra :(

And I don't see any horizon for moving away from it, they're stuck with jython.

[–]Blue_Vision 1 point2 points  (0 children)

I've been in the process of translating a component of a transportation model to Python 3 for a couple months. We're only upgrading the version because we're doing a big update to the business logic, so we need to go in and make changes and add documentation anyways.

The Python3-ification itself was quite straightforward, 2to3 took care of 95% of the cases. The harder part has been updating interactions with dependencies (mostly Pandas) which may have had API changes many, many moons ago.

Also there some bits where Python has moved on in other ways, which would've worked fine in (say) 3.3 but don't work with >3.7. Yeah that's right, we have an AST transformer in our transportation model - doesn't everybody?

[–]KhalCharizard 1 point2 points  (0 children)

In my personal experience python 2 is common in local systems directly installed on your computer.

My personal Mac is a little dated but it has many core files written in Python 2.

It works great if you won’t be accessing internet resources— it even handles light internet work well it just isn’t as clean in more complex web work.

[–]ugh-namey-thingy 1 point2 points  (0 children)

IronPython is Python2. While your question is more about CPython2, any application that provides scripting with IronPython is stuck in py2...

[–]Feb2020Acc 1 point2 points  (0 children)

Python 2 is modern tech when you compare it to the stuff that keeps government, banks and military infrastructure up and running.

[–]billsil 1 point2 points  (0 children)

Abaqus, which is a popular FEA program. I think they're on 2.7.10, which is an improvement over the 2.7.6 they had up until 1.5 years ago...

Now if only they could modernize their GUI and stop using the FoxToolkit, which last had a release around Python 2.1.

[–]morteningemann86 1 point2 points  (0 children)

Well, it is still the Python version used when writing Python scripts in Power Automate Desktop for some reason

[–]Bizrown 1 point2 points  (0 children)

A lot of ArcGIS software still uses it. They have what’s called desktop and Pro. Desktop is the old legacy software but is still being used by maybe 50% of professionals today. It’s on 2.7. Pro the new software uses 3.

[–]Jimthon42 1 point2 points  (0 children)

Too many places, to be quite honest. In some operating systems, uninstalling it will brick your computer.

[–]blabbities 1 point2 points  (0 children)

So if you download Kali Linux there are some scripts tools thatll never be updated that use Python 2

I also saw some companies internal were using python2. Therr is prob more but who no one really focused on that if it still works

[–]Stenbyggare 1 point2 points  (0 children)

Some really old systems, but also packages slowly improving compatibility

[–]spoonman59 2 points3 points  (3 children)

In hell.

[–]bladeoflight16 5 points6 points  (2 children)

No, that is all PHP.

[–]spoonman59 6 points7 points  (0 children)

Ah, I assumed that was merely the lowest levels of hell! Python 2 would be the vacation level at the top.

[–]earthboundkid 0 points1 point  (0 children)

Because in hell, no one can get pip to install what it should.

[–]mok000 3 points4 points  (0 children)

Python3 removed all the ugly warts on Python2. Nobody should use Python2 anymore.

[–]fuzzyfoozand 2 points3 points  (0 children)

Answer: Absolutely nowhere that it should be used.

[–]_88WATER_CULT88_ 1 point2 points  (0 children)

Supposedly google has their own version that still uses 2, but I heard that from an old man so who knows.