|Julien Palard 4acf1cb51b|
This is a small bash script to compile one or multiple Python versions.
I use it on my laptop, using Debian, but it may work on other distribs.
On Debian (and Debian-based distribs) it needs the following dependencies:
apt install make build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev \ xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Clone the repo anywhere, then in your
And for the compiled Python to be found in your PATH:
$ compile-pythons $ python3.6 --version Python 3.6.15 $ python3.7 --version Python 3.7.12 $ python3.8 --version Python 3.8.12 $ python3.9 --version Python 3.9.9 $ python3.10 --version Python 3.10.1 $ python3.11 --version Python 3.11.0a2
How it works
It downloads official Python sources (from
then compiles them using
--with-pydebug (it's a dev tool, don't use
it in production! Rely on your distrib in production!), and
--prefix=~/.local, and finally installs it using
Anyway it's ~67 lines of code, maybe just read it.
Be nice with distrib' provided Python
compile-python only produces binaries on the form
python will always point to your
But beware, depending on how you setup your
point to your distrib' Python, or to your manually compiled one.
On Debian, don't hesitate to
apt install python-is-python3 if you want
The file declares 3 functions:
compile-pythons: To compile a set of usefull Python versions.
compile-python: To compile a given Python version (has autocompletion).
Using a function don't force you to use the others, they are not related.
This is probably the one you're seeking, it compiles a bunch of usefull Python verisons, typically usefull if you use tox and need multiple Python versions to test your project.
This one is used by
compile-python but you can use it manually, like:
Why not using
pyenv exists, I even used it back in the time. I did not
shims part (I'm not saying it's bad), so I tried
myself as something more simple: just build Python and that's it.