How to install Python 3.7 and Pip from Dockerfile
18,471
Python3.7 can be set as the default python using update-alternatives. After the commands to install python3.7 in the docker file, add:
# Add 3.7 to the available alternatives
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
# Set python3.7 as the default python
RUN update-alternatives --set python /usr/bin/python3.7
If you need python3 to point at 3.7 as well, then replace /usr/bin/python and python in the above calls with /usr/bin/python3 and python3.
Author by
j_dev
Updated on June 21, 2022Comments
-
j_dev almost 2 years
I am trying to build a custom Docker image based on Ubuntu 18.04. Ubuntu comes loaded with Python 3.6 but I want to 1.) install Python 3.7, 2.) make it the default Python version (so it can be called with
python
instead ofpython3.7
, and 3.) install pip. When I run docker build, it fails to reload~/.bashrc
, and thuspython
is not an alias forpython3.7
. How can I resolve this issue?FROM ubuntu:18.04 # Set temp work directory # for package configuration WORKDIR /usr/src/cache # Update apt packages RUN apt update RUN apt upgrade -y # Install vim RUN apt install vim -y # Install python 3.7 RUN apt install software-properties-common -y RUN add-apt-repository ppa:deadsnakes/ppa RUN apt install python3.7 -y # Make python 3.7 the default RUN echo "alias python=python3.7" >> ~/.bashrc RUN export PATH=${PATH}:/usr/bin/python3.7 RUN /bin/bash -c "source ~/.bashrc" # Install pip RUN apt install python3-pip -y RUN python -m pip install --upgrade pip # Install lsof RUN apt install lsof # Install ta-lib # Source: https://medium.com/@artiya4u/installing-ta-lib-on-ubuntu-944d8ca24eae RUN apt install build-essential wget -y RUN wget https://artiya4u.keybase.pub/TA-lib/ta-lib-0.4.0-src.tar.gz RUN tar -xvf ta-lib-0.4.0-src.tar.gz RUN /bin/bash -c "cd ta-lib/; ./configure --prefix=/usr; make; make install" # Install pip packages COPY requirements.txt ./ RUN pip install -r requirements.txt # Set working directory for code WORKDIR /usr/src/app
Output when running
docker build
:Step 1/20 : FROM ubuntu:18.04 ---> c3c304cb4f22 Step 2/20 : WORKDIR /usr/src/cache ---> Using cache ---> 6bab8662b50a Step 3/20 : RUN apt update ---> Using cache ---> 4d3bc75e5b24 Step 4/20 : RUN apt upgrade -y ---> Using cache ---> 24a93e9b2518 Step 5/20 : RUN apt install software-properties-common -y ---> Using cache ---> 077ead1bcb54 Step 6/20 : RUN add-apt-repository ppa:deadsnakes/ppa ---> Using cache ---> 7771a6ac7068 Step 7/20 : RUN apt install python3.7 -y ---> Using cache ---> 5f57462b0444 Step 8/20 : RUN echo "alias python=python3.7" >> ~/.bashrc ---> Running in c31352b84ecd Removing intermediate container c31352b84ecd ---> c1060eaa66b8 Step 9/20 : RUN export PATH=${PATH}:/usr/bin/python3.7 ---> Running in 5de52797c355 Removing intermediate container 5de52797c355 ---> 2a9eb6215da8 Step 10/20 : RUN /bin/bash -c "source ~/.bashrc" ---> Running in cde1dd943e21 Removing intermediate container cde1dd943e21 ---> 99eae1743824 Step 11/20 : RUN apt install python3-pip -y ---> Running in 2dece67c9c40 WARNING: apt does not have a stable CLI interface. Use with caution in scripts. Reading package lists... Building dependency tree... Reading state information... ........[OMITTING SOME OUTPUT]....... Setting up build-essential (12.4ubuntu1) ... Processing triggers for libc-bin (2.27-3ubuntu1) ... Removing intermediate container 2dece67c9c40 ---> 34c1ecded3f2 Step 12/20 : RUN python -m pip install --upgrade pip ---> Running in 32ffece96844 /bin/sh: 1: python: not found The command '/bin/sh -c python -m pip install --upgrade pip' returned a non-zero code: 127