I built vim from source with option --enable-python3interp.

But after a system wide update (pop-os / ubuntu 21 to 22.04), python went from 3.9 to 3.10 and I suppose this is what broke my vim:

vim: error while loading shared libraries: libpython3.9.so.1.0: cannot open shared object file: No such file or directory

vim being vital for most of what I do on my computer, I decided to proceed with brute force: rebuild vim.

Problem solved, but:

Why vim couldn't start at all after the python upgrade? The configure option enable-python3interp obviously has something to do with it but why binding vim to a specific version of python?

Was there another solution than re-installing vim?

1 Answer 1


The numbers usually bear some meaning. For Python, 3 is language version which is obviously very different from 2. While 9 or 10 denote incompatible ABI revisions. Hence the shared objects include these numbers to have different names and not to be loaded blindly one instead of another.

Of course, you can make the symlinks and fool the loader but it may easily cause the GPF, as the code for abi9 is absolutely not guaranteed to work for abi10.

So you must either rebuild for abi10 specifically, or build for "python3/dyn" option (don't remember how exactly it is called) which includes the code for all different abis and does the necessary adjustments in runtime.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.