How do I install Python 3 on an AWS EC2 instance?

190,735

Solution 1

If you do a

sudo yum list | grep python3

you will see that while they don't have a "python3" package, they do have a "python34" package, or a more recent release, such as "python36". Installing it is as easy as:

sudo yum install python34 python34-pip

Solution 2

Note: This may be obsolete for current versions of Amazon Linux 2 since late 2018 (see comments), you can now directly install it via yum install python3.

In Amazon Linux 2, there isn't a python3[4-6] in the default yum repos, instead there's the Amazon Extras Library.

sudo amazon-linux-extras install python3

If you want to set up isolated virtual environments with it; using yum install'd virtualenv tools don't seem to reliably work.

virtualenv --python=python3 my_venv

Calling the venv module/tool is less finicky, and you could double check it's what you want/expect with python3 --version beforehand.

python3 -m venv my_venv

Other things it can install (versions as of 18 Jan 18):

[ec2-user@x ~]$ amazon-linux-extras list
  0  ansible2   disabled  [ =2.4.2 ]
  1  emacs   disabled  [ =25.3 ]
  2  memcached1.5   disabled  [ =1.5.1 ]
  3  nginx1.12   disabled  [ =1.12.2 ]
  4  postgresql9.6   disabled  [ =9.6.6 ]
  5  python3=latest  enabled  [ =3.6.2 ]
  6  redis4.0   disabled  [ =4.0.5 ]
  7  R3.4   disabled  [ =3.4.3 ]
  8  rust1   disabled  [ =1.22.1 ]
  9  vim   disabled  [ =8.0 ]
 10  golang1.9   disabled  [ =1.9.2 ]
 11  ruby2.4   disabled  [ =2.4.2 ]
 12  nano   disabled  [ =2.9.1 ]
 13  php7.2   disabled  [ =7.2.0 ]
 14  lamp-mariadb10.2-php7.2   disabled  [ =10.2.10_7.2.0 ]

Solution 3

Here are the steps I used to manually install python3 for anyone else who wants to do it as it's not super straight forward. EDIT: It's almost certainly easier to use the yum package manager (see other answers).

Note, you'll probably want to do sudo yum groupinstall 'Development Tools' before doing this otherwise pip won't install.

wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
tar zxvf Python-3.4.2.tgz
cd Python-3.4.2
sudo yum install gcc
./configure --prefix=/opt/python3
make
sudo yum install openssl-devel
sudo make install
sudo ln -s /opt/python3/bin/python3 /usr/bin/python3
python3 (should start the interpreter if it's worked (quit() to exit)

Solution 4

EC2 (on the Amazon Linux AMI) currently supports python3.4 and python3.5.

sudo yum install python35
sudo yum install python35-pip

Solution 5

As of Amazon Linux version 2017.09 python 3.6 is now available:

sudo yum install python36 python36-virtualenv python36-pip

See the Release Notes for more info and other packages

Share:
190,735

Related videos on Youtube

Jake_Howard
Author by

Jake_Howard

Updated on September 29, 2021

Comments

  • Jake_Howard
    Jake_Howard over 2 years

    I'm trying to install python 3.x on an AWS EC2 instance and:

    sudo yum install python3
    

    doesn't work:

    No package python3 available.
    

    I've googled around and I can't find anyone else who has this problem so I'm asking here. Do I have to manually download and install it?

    • Simeon Visser
      Simeon Visser over 9 years
      Possibly yes, it may not yet be available for Amazon Linux (or clarify if you're using a different OS).
    • BMW
      BMW over 9 years
      possible duplicate of Installing python3 on RHEL
    • Jake_Howard
      Jake_Howard over 9 years
      Hi, yes it's the 'standard' Amazon Linux OS. Happy to manually install but there are a few things missing ( and I thought it best to check before spending time messing about :)
    • Jake_Howard
      Jake_Howard over 9 years
      @BMW the answer you linked to was helpful but not enough to get it working on its own.
    • slushy
      slushy over 7 years
      Since the AMI underneath changes often, it may be useful to check the release notes for the most recent machine, available here: aws.amazon.com/amazon-linux-ami/#Release_Notes
    • Minh Hoàng
      Minh Hoàng almost 4 years
      Now i can run on Amazon Linux 2 AMI. sudo yum install python3.
  • Roman
    Roman almost 9 years
    This seems to be the simpler answer. Did AWS update their packages between when @Jake_Howard posted an answer and you did?
  • Jake_Howard
    Jake_Howard almost 9 years
    I haven't verified that this is true, but I'll reward the best answer on trust. I'm not sure if they have upgraded since I answered, there are certainly a fair few blog posts out there outlining how to do it the old fashioned way. The even better approach that I found was just to use Ubuntu instead! :)
  • blong
    blong almost 9 years
    I think this method is best. The approach @Jake_Howard outlined worked for me in an arbitrary CentOS VM. However, I believe that answer still needs some editing in terms of what's performed as root.
  • golmschenk
    golmschenk about 8 years
    To use pip3 also link it with sudo ln -s /opt/python3/bin/pip3 /usr/bin/pip3.
  • Ray Vahey
    Ray Vahey over 7 years
    To use pip3 add the following symbolic link # ln -s /usr/bin/pip-3.4 /usr/bin/pip3
  • Sohan Shirodkar
    Sohan Shirodkar over 7 years
    sudo yum install python34 doesn't work for me. It says No package python34 available.
  • slushy
    slushy over 7 years
    @SohanShirodkar you may have been unlucky and just caught a new release -- their September release moved to python35 ... here's where you can see the newest releases: aws.amazon.com/amazon-linux-ami/#Release_Notes
  • Chad Van De Hey
    Chad Van De Hey over 7 years
    Use @Jake_Howard 's answer, if you do not have access on your aws YUM manager to python 3.
  • Jake_Howard
    Jake_Howard almost 7 years
    @xpmatteo - which bit is wrong? Is it just a step or the approach that you object to?
  • xpmatteo
    xpmatteo almost 7 years
    @Jake_Howard It is not true that the only way is to manually install Python3. That is certainly an option, but you can also do yum install python35 as others have mentioned. If you would kindly amend your answer I will remove my downvote :)
  • Jake_Howard
    Jake_Howard almost 7 years
    @xpmatteo - re-worded the answer to remove the incorrect phrase. For posterity: at the time of asking the question and posting the original answer, I wasn't aware of the ability to use yum with a specific version of python3 (see other answers), or these packages weren't available at the time of original writing.
  • Adam Link
    Adam Link over 6 years
    Props for this answer! Python3 is not python3 on AWS instances by default. Very frustrating to swap between Ubuntu and AWS Linux when working!
  • ski_squaw
    ski_squaw about 6 years
    pip3 is not linked, so if you want to use it, sudo ln -s /usr/bin/pip-3.6 /usr/bin/pip3
  • Emmanuel N K
    Emmanuel N K over 5 years
    In 2018, sudo yum install python36 is also available. also don't forget to install latest pip: python3 -m pip install --user --upgrade pip and then you can python3 -m pip install --user virtualenv for a virtual env. ref: packaging.python.org/guides/installing-using-pip-and-virtual‌​env
  • Al Po
    Al Po over 5 years
    Worked for me! This days you can use 3.7.2 instead of 3.4.2
  • Samer
    Samer about 5 years
    This answer, although acceptable, wasted my time uninstalling python 3.4 to install 3.6, since the version of python3 will not always be python34, as assumed by the answer. In fact, python 3.4 is being deprecated March 2019 by Django, being replaced by 3.6.
  • zenbeni
    zenbeni about 5 years
    "Topic python3 has end-of-support date of 2018-08-22" this is not supported anymore
  • Nick T
    Nick T about 5 years
    @zenbeni did the default system Python get bumped to Python 3?
  • zenbeni
    zenbeni about 5 years
    @NickT python3-3.7.2-4.amzn2.0.1.x86_64 is actually installed through 'yum install python3' you don't use amazon linux extras anymore for python
  • Nick T
    Nick T about 5 years
    I'm mildly confused why this keeps getting upvotes (4 in the last month) if it's now obsolete.
  • GoYun.Info
    GoYun.Info about 4 years
    I can run 'sudo yum install python3 python3-pip' today.
  • russellthehippo
    russellthehippo almost 4 years
    This is the easiest way that works in 2020 of all the others.
  • dragon788
    dragon788 almost 4 years
    Unfortunately the only version it shows anymore now is python34.x86_64, they must've removed python36.x86_64 which is quite annoying.
  • BEN HACHME EL HASSANE
    BEN HACHME EL HASSANE over 3 years
    sudo yum install python36 python36-pip worked for me, thanks !!
  • srcolinas
    srcolinas over 3 years
    This is a very good answer, since you can use the same approach to install any version you want. The package manager does not include all.
  • bsplosion
    bsplosion over 3 years
    This does not work on Amazon Linux 2 - python36 and all other related packages are held in amazon-linux-extras now and don't install the expected packages which others may have as dependencies.
  • Jeremy Thompson
    Jeremy Thompson over 3 years
    This works and you can confirm if 3.5 is the latest you have with this command sudo yum list | grep python3 and to once you've installed confirm by typing pythono3 --version - yes python3 as python will return v2.
  • Jeremy Thompson
    Jeremy Thompson over 3 years
    -s /usr/bin/pip-3.6 /usr/bin/pip3 failed for me so I ended up using pip-3.6 install xyz
  • Admin
    Admin over 2 years
    Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.