![]() porting the Sciagraph performance and memory profiler took a couple of months because of some of the major changes to Python’s internals.Įven if the code is compatible, if dependencies aren’t compatible that can still delay a release.įor example, when I started porting the Fil to 3.10, I couldn’t do a release because the test suite relied on the numexpr package, and numexpr wouldn’t release 3.10 wheels until NumPy had complete 3.10 wheels, which didn’t happen immediately. The Python 3.11 support for the Numba project, for example, is still a work-in-progress as of Dec 8, 2022.Īpparently it took them 6 months post-release until they had Python 3.9 support, and 3 months after 3.10.įor my own projects, some should just work, but e.g. In other cases, however, the code is incompatible and requires some work to support new Python releases. That means you can can compile it yourself, with enough work, and if not the maintainer will usually release a new wheel pretty quickly. Sometimes supporting a new release is just a matter of recompiling the code. ![]() Older versions might not support the binary wheels for 3.11 on Linux, and instead pip will try to build from source. Important: Make sure you upgrade pip before using it. Some projects required writing code to support changed APIs in Python internals, but will eventually get released-we’ll cover that next. Personally I had branches ready for some of my own projects to build 3.11 wheels, but didn’t do any releases in advance because GitHub Actions’ release candidate Python versions are just different to sometimes make life difficult. For 3.11, wheels were available for all platforms even before 3.11 was released.For 3.10, it had a Linux wheel available the day of 3.10’s release, but not macOS and Windows, which took a bit longer.For the 3.9 release, it did not have wheels available until a while after the release.In general as time goes on package maintainers are putting in more and more effort to shorten this window. In this case, psycopg2-binary added wheels for 3.11 on Oct. When you install a package, you can just download the binary wheel and don’t need to compile it (unless you’re using Alpine Linux, in which case wheels may or may not be available).īut at least for a short time after 3.11’s release, some packages won’t have wheels for Python 3.11 uploaded yet. Typically, Python package maintainers upload compiled versions of their packages–known as “wheels”–to PyPI. Please add the directoryĬontaining pg_config to the $PATH or specify the full executable path with the Pg_config is required to build psycopg2 from source. $ python3.11 -m pip install psycopg2-binary When I tried to install it on Python 3.11 on the day of 3.11’s release, things don’t go well: To begin with, not all packages can be installed on 3.11 yet.įor example, psycopg2-binary provides bindings to the PostgreSQL database it had tens of million of downloads from PyPI over the last month. With that in mind, let’s consider the problems with using 3.11 immediately after a release, and in the following months: 1. In addition, because upgrades involve so many different groups, coordination and releases take even more time. None of this should be read as a complaint towards the people doing the maintenance, they’re doing hugely valuable work for free, and everything takes time. The problems with a new major Python releaseĪs with many open source projects, Python, Python libraries, and most of the toolchain and packages mentioned in this article are based on volunteer labor. To understand why, we need to consider Python packaging, the software development process, and take a look at the history of past releases. Now that it’s been out for longer, but you might still have issues, but upgrading is worth trying. Immediately after the release, you probably didn’t want to upgrade just yet. Python 3.11 is out now–but should you switch to it immediately?Īnd if you shouldn’t upgrade just yet, when should you?
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |