title: How to install Python 3.7 and Pip from Dockerfile
body: <p>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 <code>python</code> instead of <code>python3.7</code>, and 3.) install pip. When I run docker build, it fails to reload <code>~/.bashrc</code>, and thus <code>python</code> is not an alias for <code>python3.7</code>. How can I resolve this issue?</p>
  
  <pre><code>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" &gt;&gt; ~/.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
  
  </code></pre>
  
  <p>Output when running <code>docker build</code>:</p>
  
  <pre><code>Step 1/20 : FROM ubuntu:18.04
   ---&gt; c3c304cb4f22
  Step 2/20 : WORKDIR /usr/src/cache
   ---&gt; Using cache
   ---&gt; 6bab8662b50a
  Step 3/20 : RUN apt update
   ---&gt; Using cache
   ---&gt; 4d3bc75e5b24
  Step 4/20 : RUN apt upgrade -y
   ---&gt; Using cache
   ---&gt; 24a93e9b2518
  Step 5/20 : RUN apt install software-properties-common -y
   ---&gt; Using cache
   ---&gt; 077ead1bcb54
  Step 6/20 : RUN add-apt-repository ppa:deadsnakes/ppa
   ---&gt; Using cache
   ---&gt; 7771a6ac7068
  Step 7/20 : RUN apt install python3.7 -y
   ---&gt; Using cache
   ---&gt; 5f57462b0444
  Step 8/20 : RUN echo "alias python=python3.7" &gt;&gt; ~/.bashrc
   ---&gt; Running in c31352b84ecd
  Removing intermediate container c31352b84ecd
   ---&gt; c1060eaa66b8
  Step 9/20 : RUN export PATH=${PATH}:/usr/bin/python3.7
   ---&gt; Running in 5de52797c355
  Removing intermediate container 5de52797c355
   ---&gt; 2a9eb6215da8
  Step 10/20 : RUN /bin/bash -c "source ~/.bashrc"
   ---&gt; Running in cde1dd943e21
  Removing intermediate container cde1dd943e21
   ---&gt; 99eae1743824
  Step 11/20 : RUN apt install python3-pip -y
   ---&gt; 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
   ---&gt; 34c1ecded3f2
  Step 12/20 : RUN python -m pip install --upgrade pip
   ---&gt; 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
  </code></pre>