Compile Python interpreter

Notes:

Most content comes from https://www.scivision.co/compile-install-python-beta-raspberry-pi/ and https://stackoverflow.com/questions/5937337/building-python-with-ssl-support-in-non-standard-location

With necessary modifications to make it less confusing. - In general, one of the few times you should ever use sudo on a Linux computer is apt install. - If you need to use apt installed Python modules that access hardware like GPIO, you can always access system Python 3 via /usr/bin/python3 - compile openssl if system's version is too low.

    ./config
    make
    make install

If openssl fails to load *.so file, create openssl.conf under /etc/ld.so.conf.d with one line "/usr/local/lib". ldconfig -v to load new lib path.

Compile Python

  1. get prereqs on your ARM device:
apt install libffi-dev libbz2-dev liblzma-dev libsqlite3-dev libncurses5-dev libgdbm-dev zlib1g-dev libreadline-dev libssl-dev tk-dev build-essential libncursesw5-dev libc6-dev openssl git
  1. extract the latest Python source code
  2. Configure (3 minutes on Raspberry Pi 2): cd cpython-3.7*
  3. ./configure --prefix=$HOME/opt --enable-optimizations
  4. Build and install–this step takes 10-40 minutes, depending on Raspberry Pi model. Do not use sudo!
    make -j -l 4
    make install

Note: don’t omit -l 4 or Pi will be quickly overwhelmed and error build. This limits load average to 4. Without it, load average will soar to 100+ (bad). 7. add to ~/.bashrc: export PATH=$HOME/opt/bin/:$PATH then open a new Terminal

Verify

Check that which python3 and which pip3 etc. refer to ~/.local/bin/ instead of /usr/bin. Don’t uninstall system Python 3 /usr/bin/python3 because system packages depend on it. The PATH you set in Step 5 above makes Linux prefer your new Python 3.7.


Published

Last Updated

Category

Python

Tags

Contact