Skip to content

Instantly share code, notes, and snippets.

Forked from BMeu/raspbian-python3.5.rst
Last active July 4, 2023 06:37
Star You must be signed in to star a gist
What would you like to do?
Installing Python 3.6 on Raspbian

Installing Python 3.6 on Raspbian

As of January 2018, Raspbian does not yet include the latest Python release, Python 3.6. This means we will have to build it ourselves, and here is how to do it. There is also an ansible role attached that automates it all for you.

  1. Install the required build-tools (some might already be installed on your system).

    $ sudo apt-get update
    $ sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev

    If one of the packages cannot be found, try a newer version number (e.g. libdb5.4-dev instead of libdb5.3-dev).

  2. Download and install Python 3.6. When downloading the source code, select the most recent release of Python 3.6, available on the official site. Adjust the file names accordingly.

    $ wget
    $ tar xf Python-3.6.5.tar.xz
    $ cd Python-3.6.5
    $ ./configure
    $ make
    $ sudo make altinstall
  3. Optionally: Delete the source code and uninstall the previously installed packages. When uninstalling the packages, make sure you only remove those that were not previously installed on your system. Also, remember to adjust version numbers if necesarry.

    $ sudo rm -r Python-3.6.5
    $ rm Python-3.6.5.tar.xz
    $ sudo apt-get --purge remove build-essential tk-dev
    $ sudo apt-get --purge remove libncurses5-dev libncursesw5-dev libreadline6-dev
    $ sudo apt-get --purge remove libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev
    $ sudo apt-get --purge remove libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev
    $ sudo apt-get autoremove
    $ sudo apt-get clean

This guide is pretty much taken from the following tutorial: and

# An ansible role to configure python3.6 on a Raspberry Pi.
# to get started, ensure you have ansible installed:
# $ sudo apt install ansible
# Then run this playbook:
# $ ansible-playbook -i localhost, python3.6.yml
# Then you can get started:
# $ python3.6
- hosts: all
version: 3.6.5
threads: 4
- name: "python{{version}} runtime&build dependencies"
become: yes
apt: name={{item}}
- build-essential
- tk-dev
- libncurses5-dev
- libncursesw5-dev
- libreadline6-dev
- libdb5.3-dev
- libgdbm-dev
- libsqlite3-dev
- libssl-dev
- libbz2-dev
- libexpat1-dev
- liblzma-dev
- zlib1g-dev
- name: "Download python{{version}}"
- name: "Unarchive python{{version}}"
- name: "configure python{{version}} build"
command: ./configure
chdir: "/tmp/Python-{{version}}"
creates: "/tmp/Python-{{version}}/Makefile"
- name: "build python{{version}}"
# not using make module to be able to use -j and creates option to fully skip step
command: make -j{{threads}}
chdir: "/tmp/Python-{{version}}"
creates: "/tmp/Python-{{version}}/python"
- name: "install python{{version}}"
become: yes
chdir: "/tmp/Python-{{version}}"
target: altinstall
Copy link

Hi i followed your tutorial but when i make python3 my raspbian says 3.5.3

Copy link

dschep commented Jul 23, 2019

@Twistere does running python3.6 get you anything different? My guess is your pi already has python3 in some form, and this doesn't supercede that (bc of the use of make altinstall) but rather uses more specific, but non-conflicting names for the binaries.

Copy link

@dschep I have followed your installation instructions and got python 3.7 installed successfully. I don't seem to be able to use pip3.7 though. It returns pip3.7: command not found. Is there something special that needs to be done to allow pip to use the latest version?

Copy link

appeacock commented Mar 7, 2020

Install pip3 using the python3 version you want:

$ wget
$ python3.6.x ./
$ pip3 --version
pip <version> from /home/pi/.local/lib/<python_version>/site-packages/pip (<python_version>)

Copy link

@aplawson I tried following your steps but got bash error:
$ wget
$ python3.6.x ./

bash: python3.6.5: command not found

Copy link

Just a formatting comment, it would be nice if the dollar signs were removed from the instructions so people could copy and paste the block.

I can't tell if the raw just isn't showing me this, but if you do:
``` (3 of this ` character) and "shell" then another 3 of that character to close the block, it will format like at terminal.

#code here
echo like this

Copy link

Hi, I installed python 3.6.1 like in this quide, but how can I use it? When I type "python" I get python 2.7 or "python3" for python 3.4 but I have no python36 and I have no idea where it is intalled.

Is there a way to make python 3.6 the standart when I type "python"? refer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment