How do I install Python 3 on an AWS EC2 instance?
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
Related videos on Youtube
Jake_Howard
Updated on September 29, 2021Comments
-
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 over 9 yearsPossibly yes, it may not yet be available for Amazon Linux (or clarify if you're using a different OS).
-
BMW over 9 yearspossible duplicate of Installing python3 on RHEL
-
Jake_Howard over 9 yearsHi, 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 over 9 years@BMW the answer you linked to was helpful but not enough to get it working on its own.
-
slushy over 7 yearsSince 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 almost 4 yearsNow i can run on Amazon Linux 2 AMI. sudo yum install python3.
-
-
Roman almost 9 yearsThis seems to be the simpler answer. Did AWS update their packages between when @Jake_Howard posted an answer and you did?
-
Jake_Howard almost 9 yearsI 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 almost 9 yearsI 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 about 8 yearsTo use
pip3
also link it withsudo ln -s /opt/python3/bin/pip3 /usr/bin/pip3
. -
Ray Vahey over 7 yearsTo use pip3 add the following symbolic link # ln -s /usr/bin/pip-3.4 /usr/bin/pip3
-
Sohan Shirodkar over 7 years
sudo yum install python34
doesn't work for me. It saysNo package python34 available.
-
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 over 7 yearsUse @Jake_Howard 's answer, if you do not have access on your aws YUM manager to python 3.
-
Jake_Howard almost 7 years@xpmatteo - which bit is wrong? Is it just a step or the approach that you object to?
-
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 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 over 6 yearsProps 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 about 6 yearspip3 is not linked, so if you want to use it, sudo ln -s /usr/bin/pip-3.6 /usr/bin/pip3
-
Emmanuel N K over 5 yearsIn 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 canpython3 -m pip install --user virtualenv
for a virtual env. ref: packaging.python.org/guides/installing-using-pip-and-virtualenv -
Al Po over 5 yearsWorked for me! This days you can use 3.7.2 instead of 3.4.2
-
Samer about 5 yearsThis 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 about 5 years"Topic python3 has end-of-support date of 2018-08-22" this is not supported anymore
-
Nick T about 5 years@zenbeni did the default system Python get bumped to Python 3?
-
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 about 5 yearsI'm mildly confused why this keeps getting upvotes (4 in the last month) if it's now obsolete.
-
GoYun.Info about 4 yearsI can run 'sudo yum install python3 python3-pip' today.
-
russellthehippo almost 4 yearsThis is the easiest way that works in 2020 of all the others.
-
dragon788 almost 4 yearsUnfortunately 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 over 3 years
sudo yum install python36 python36-pip
worked for me, thanks !! -
srcolinas over 3 yearsThis 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 over 3 yearsThis does not work on Amazon Linux 2 -
python36
and all other related packages are held inamazon-linux-extras
now and don't install the expected packages which others may have as dependencies. -
Jeremy Thompson over 3 yearsThis 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 typingpythono3 --version
- yes python3 as python will return v2. -
Jeremy Thompson over 3 years
-s /usr/bin/pip-3.6 /usr/bin/pip3
failed for me so I ended up usingpip-3.6 install xyz
-
Admin over 2 yearsYour 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.