I've tried the normal way, sudo apt-get install python3.6, but... well... that didn't work.

So, how would I go about it? (I'd preferably not build it on my own)

I'm using Ubuntu 16.04.

share|improve this question
3  
Maybe python 3.6 is not available for your distribution. If you have installed aptitude, run aptitude search python3 – ridgy Dec 28 '16 at 20:13
up vote 217 down vote accepted

Ubuntu 14.04 and 16.04

If you are using Ubuntu 14.04 or 16.04, you can use J Fernyhough's PPA at https://launchpad.net/~jonathonf/+archive/ubuntu/python-3.6:

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

Alternatively, you can use Felix Krull's deadsnakes PPA at https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6

Ubuntu 16.10 and 17.04

If you are using Ubuntu 16.10 or 17.04, then Python 3.6 is in the universe repository, so you can just run:

sudo apt-get update
sudo apt-get install python3.6

After installation for Ubuntu 14.04, 16.04, 16.10 and 17.04

To invoke the Python 3.6 interpreter, run python3.6.

Ubuntu 17.10

Ubuntu 17.10 already comes with Python 3.6 as default. Just run python3 to invoke it.

share|improve this answer
1  
@Olian04 No problem! As a general tip, J Fernyhough has a lot of useful PPAs at launchpad.net/~jonathonf. If you need a PPA, be sure to check there. – edwinksl Dec 28 '16 at 20:40
3  
Note that python3.6 in Ubuntu 16.10 is a beta version that has some problems (like a very painful memory leak in dict that shows up in some rare circumstances). – Marius Gedminas Dec 29 '16 at 14:40
1  
pyenv downloads releases directly from Python.org and is generally updated for new versions (pre-releases or finals) within 24 hours of them being available! You can also direct pyenv to install dev branches, wherein it will clone the appropriate CPython repository branch and build it for you. – Nick T Dec 29 '16 at 15:08
20  
CAUTION - Do not under any circumstances be tempted to run sudo apt remove python3.5 or anything like it; Python is more fundamentally baked into Ubuntu than you would think, and you could break your Ubuntu install. If you want python3 to map to python3.6, create a symlink instead! – Huw Walters Apr 28 '17 at 9:09
2  
I see there is no python3.6-pip package, and so I used curl https://bootstrap.pypa.io/get-pip.py | sudo python3.6 to install pip. – A-B-B Jun 20 '17 at 20:26

I would recommend pyenv to solve your woes. It doesn't use Aptitude, and does involve "building it yourself", but it's fully automated. You can build and install a new (or old) version of Python by simply saying pyenv install 3.6.0. Everything runs as your user, so you don't have to worry about messing up the Python used by Ubuntu itself.

Install pyenv

  1. Install headers needed to build CPythons (exotic Pythons like PyPy or Jython may have other dependencies):

    sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \
                            libsqlite3-dev tk-dev
    
    # optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.)
    sudo apt-get install -y libpng-dev libfreetype6-dev    
    
  2. Run the installer script (installs pyenv and some very useful pyenv plugins by the original author; see here for more)

    curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
    
  3. Add init lines to your ~/.profile or ~/.bashrc (it mentions it at the end of the install script):

    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
  4. Restart your shell to reload the profile script. (with e.g. source ~/.bashrc)

Done!

Setting up an environment

To not touch the system Python (generally a bad idea; OS-level services might be relying on some specific library versions, etc.) make your own environment, it's easy! Even better, no sudo, for it or pip installs!

  1. Install your preferred Python version (this will download the source and build it for your user, no input required)

    pyenv install 3.6.0
    
  2. Make it a virtualenv so you can make others later if you want

    pyenv virtualenv 3.6.0 general
    
  3. Make it globally active (for your user)

    pyenv global general
    
  4. Do what you want to with the Python/pip, etc. It's yours.

If you want to clean out your libraries later, you could delete the virtualenv (pyenv uninstall general) or make a new one (pyenv virtualenv 3.6.0 other_proj). You can also have environments active per-directory: pyenv local other_proj will drop a .python-version file into your current folder and any time you invoke Python or pip-installed Python utilities from it or under it, they will be shimmed by pyenv.

share|improve this answer
    
Nice. Note that a single dependency is missing - make :) – Elazar Jan 5 '17 at 9:02
2  
@Elazar probably build-essentials for completeness – Nick T Jan 5 '17 at 15:57
1  
or non-plural, because Debian reasons. – Nick T Jan 5 '17 at 16:01
2  
I don't know, but I discovered this issue by helping someone on IRC debug a problem where a particular Python package (lxml?) failed to work due to this. So it happens in practice, to some people, and is worth knowing. (The workaround is rm -r ~/.cache/pip/wheels/.) – Marius Gedminas Jan 11 '17 at 6:30
1  
@fbrundu updated for that, thanks :D – Nick T Jan 27 '17 at 19:00

An alternative route if you can't find any working repos would be you could try compiling yourself from source. You can find the source code on the download page. Then download and untar the tarball; for example for Python-3.6.1.tgz.

The process for untarring the tgz file is:

tar -xvzf /path/to/yourfile.tgz

Once you are in the file path the file was unzipped to, run:

./configure
make
make altinstall

And hopefully this should solve the problem for you.

share|improve this answer
3  
Question says (id preferably not build it on my own). Maybe it'd be better to go the apt route if possible. – TheWanderer Dec 28 '16 at 20:11
    
Ok, I'll have a look see if I can find any alternative repositories for you. Did you get a chance to look on Google for alternative repos yourself yet? I don't want to suggest things you've already tried. – Just In Time Berlake Dec 28 '16 at 20:13
    
I'm not the OP. Just making a suggestion. I couldn't find any PPAs for 3.6, so building might be the necessary route. You should probably address that in your answer though. – TheWanderer Dec 28 '16 at 20:14

For Ubuntu 15.10 I installed it successfully using this method:

sudo add-apt-repository ppa:jonathonf/python-3.6

But I edited this file:

sudo vi /etc/apt/sources.list.d/jonathonf-ubuntu-python-3_6-wily.list

And I changed wily to trusty and then:

sudo apt-get update
sudo apt-get install python3.6
share|improve this answer
6  
Ubuntu 15.10? It has gone EOL months ago. Time to upgrade. – edwinksl Jun 14 '17 at 7:19

It depends on which version of Ubuntu you are using.

Ubuntu 16.10 and Ubuntu 17.04

Since Python 3.6 is installed in the universe repository of Ubuntu 16.10 and Ubuntu 17.04, you can directly install python 3.6 from the repository. Just use the commands below:

sudo apt update
sudo apt install python3.6

Ubuntu 16.04

There are two ways to install Python3.6 on Ubuntu 16.04

  • Compile and install python 3.6 on Ubuntu 16.04
  • Install python 3.6 on Ubuntu 16.04 from PPA

1. Compile and install python 3.6 on Ubuntu 16.04

Install the necessary dependencies, download the python 3.6 source code, and build the environment and install

sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
tar xvf Python-3.6.0.tar.xz
cd Python-3.6.0/
./configure
sudo make altinstall

2. Install python 3.6 on Ubuntu 16.04 from PPA

You can install Python 3.6  from PPA using the commands below

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt update
sudo apt install python3.6

If Python 3.6 is correctly installed, you can invoke the python interpreter by running python3.6 in the terminal.

I hope this helps. If you are having any issues, you can check this blog post here.

share|improve this answer
    
This is essentially a copy of the accepted answer. Where is the added valuee of your answer? – Marc Vanhoomissen Jan 4 at 19:28
    
The first step in the Ubuntu 16.04 is for those who want to compile and install python 3.6 for some reason. The process of compile and install Python 3.6 on Ubuntu 16.04 isn't available in the accepted answer or any answer in the thread for that matter. The other points are to make clear the version of Ubuntu and how it differs from other accepted answers. – Aryal Bibek Jan 5 at 6:01

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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