innit: a new system image, with Python 3.13 and Ubuntu 22.04


If you signed up for an account on PythonAnywhere after 25 March 2025, you’ll have Python versions 3.11, 3.12 and 3.13 available. Additionally, the underlying operating system for your account will be Ubuntu 22.04, rather than the 20.04 used by older accounts.

If you signed up before that date, you’ll be on an older “system image” – essentially the version of the operating system and the set of installed packages that you have access to. You can switch to the new system image from the “Account” page, but you may need to make changes to your code and/or virtualenvs to make everything work – there’s more information on that page.

This post has more details on what’s new in the “innit” system image. There’s a lot!

A new and better operating system

The operating system is now Ubuntu 22.04. While this doesn’t make any huge changes to the system, it made a number of the things below possible…

Python version changes

It had been a while since our last system image, so there was a bit of catch-up to do with Python versions:

  • We’ve added on Python version 3.11.11, 3.12.8, and 3.13.1 – three new versions in one update.
  • We’ve also included – separately from the normal install of 3.13 – the experimental “free-threaded” version; it’s not ready for production use yet, but if you want to play with it, you can run it with the python3.13t command from Bash.
  • We’ve installed new point releases of the other installed Pythons:
    • 3.10.12
    • 3.9.21
    • 3.8.20
    • 3.7.17
  • Python 3.7 and 3.8 have reduced support; both are still installed, but we no longer pre-install any packages for them apart from pip and various virtualenv-related things. That means that you can use them, but you’ll need to install any dependencies you need for yourself. There are also some extra steps you need to take to create a virtualenv with Python 3.7.
  • Python 2.7 is no longer installed or supported in “innit”, and the same will be true of future system images. If you’re still using 2.7, you should definitely upgrade! The Python development team dropped all support for it (including security patches) more than five years ago so you should really be using Python 3.x for everything. But if you need a little more time to switch over, you can stay on the “haggis” system image to do that. We expect to continue support for “haggis” for at least two more years.
  • We now have PyPy 7.3.17 installed, with support for Python 3.10.14. We no longer include the Python 2-compatible version of PyPy.

If you’d like to see the details of which PythonAnywhere system images have which versions of Python, this help page has the details.

Python packages

We’ve installed a lot of new Python packages, and updated all of the ones that we already supported. We won’t list all of them here to prevent this post from getting absurdly long, but here are the highlights:

  • Meta: if you feel that pip is a bit too old-school for your package-management needs, you can try poetry, hatch, or uv.
  • We’ve added on some useful packages if you’re building AI apps; the openai package is now pre-installed, and we’ve also installed transformers so that you can run models directly on PythonAnywhere – though we should note that only small models will work, as we don’t have GPU support.
  • We’ve added fasthtml to the pre-installed packages; it works as part of our experimental ASGI system right now, and we’re working on full support.
  • For those who are working with market data, yfinance is now ready for you to use.
  • We now bundle pdfkit so that you can generate nicely-formatted documents.
  • On a more creative note, we now have pyaudio – you can’t play audio directly on our servers (and wouldn’t be able to hear it if you could), but you can now process audio files.
  • If you like static site generators, we now have hugo installed – it’s actually the one we use for this blog, which may or may not be a recommendation…
  • But if APIs are more your kind of thing, we’ve added on Django REST framework.
  • You can also check out ruff, for linting and formatting your Python code super-quickly.

Non-Python packages

We’ve updated all of the OS packages too, and installed a bunch more. Highlights again:

  • We’ve upgraded sqlite from version 3.31.1 to 3.37.2. That’s still a bit old, but should fix the issues that people have been having with it. We plan for our next system image to pull that forward again to something more leading-edge.
  • If you’re a keen GitHub user, we now have the gh command-line tool installed so that you can work with it seamlessly.
  • For Selenium users, we’ve upgraded Chromium and Chromedriver from version 90 to version 131, with the related Selenium upgrades, so scraping sites that need the latest and greatest browser features should now work.
  • We’ve added on the client-side tools and libraries for Postgres 16. That was a necessary first step before we could start work on providing Postgres 16 servers ourselves – we’re now unblocked on that, and should be able to push forward.
  • We realised our version of GDAL was really out of date, and the Python bindings we had installed were not compatible with it. Oops. We now have version 3.9.3, and the right bindings for it.

Any questions?

If you asked for a particular package to be installed, and we’ve installed it, then we should have already let you know – and in the few cases where we found we couldn’t install a particular package, we’ll have emailed you about that too. But if you’re wondering what the status is of some particular thing that you expected to have fixed in the new system image, and you’ve not heard from us, then just drop us a line at support@pythonanywhere.com. And likewise, if you have any other questions, just let us know :-)

comments powered by Disqus