title: Running pip install requirements.txt fails in docker build
body: <p>I am trying to create a docker image for machine learning model but it fails if i try to install from requirements.txt but if I run below docker file then it runs successfully</p>
  
  <p>The following is my docker file:</p>
  
  <pre><code>FROM alpine:latest
  
  RUN mkdir -p /home/ePortalService
  WORKDIR /home/ePortalService
  
  COPY requirements.txt /home/ePortalService
  
  RUN apk --update add --virtual scipy-runtime python py-pip \
      &amp;&amp; apk add --virtual scipy-build \
          build-base python-dev openblas-dev freetype-dev pkgconfig gfortran lapack-dev \
      &amp;&amp; ln -s /usr/include/locale.h /usr/include/xlocale.h \
      &amp;&amp; pip install --no-cache-dir numpy \
      &amp;&amp; pip install --no-cache-dir pandas \
      &amp;&amp; pip install --no-cache-dir matplotlib&gt;=3.0.0 \
      &amp;&amp; pip install --no-cache-dir scipy \
      &amp;&amp; apk del scipy-build \
      &amp;&amp; apk add --virtual scipy-runtime \
          freetype libgfortran libgcc libpng  libstdc++ musl openblas tcl tk \
      &amp;&amp; rm -rf /var/cache/apk/*
  </code></pre>
  
  <p>If I try to manually run pip install numpy, then all the way to pip install scipy it works.</p>
  
  <p>I eventually intend to make this requirements.txt be part of a docker image's Dockerfile build script (without using virtualenv inside the docker image) but this throws error</p>
  
  <p>Any ideas why it works manually but not automatically, and how to fix it?</p>
  
  <p>the following is the error log:</p>
  
  <pre><code>Sending build context to Docker daemon  421.4MB
  Step 1/6 : FROM alpine:latest
   ---&gt; cc0abc535e36
  Step 2/6 : RUN mkdir -p /home/ePortalService
   ---&gt; Running in 8f47d4b7dea3
  Removing intermediate container 8f47d4b7dea3
   ---&gt; b0bc3aacada2
  Step 3/6 : WORKDIR /home/ePortalService
   ---&gt; Running in 84378138f606
  Removing intermediate container 84378138f606
   ---&gt; 3f907a00b6ed
  Step 4/6 : COPY requirements.txt /home/ePortalService
   ---&gt; 8c691dc5aaaf
  Step 5/6 : RUN apk --update add --virtual scipy-runtime python py-pip     &amp;&amp; apk add --virtual scipy-build         build-base python-dev openblas-dev freetype-dev pkgconfig gfortran lapack-dev     &amp;&amp; ln -s /usr/include/locale.h /usr/include/xlocale.h     &amp;&amp; pip install --no-cache-dir -r requirements.txt     &amp;&amp; apk del scipy-build     &amp;&amp; apk add --virtual scipy-runtime         freetype libgfortran libgcc libpng  libstdc++ musl openblas tcl tk     &amp;&amp; rm -rf /var/cache/apk/*
   ---&gt; Running in 185848aecaaa
  fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
  fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/community/x86_64/APKINDEX.tar.gz
  (1/13) Installing libbz2 (1.0.8-r1)
  (2/13) Installing expat (2.2.9-r1)
  (3/13) Installing libffi (3.2.1-r6)
  (4/13) Installing gdbm (1.13-r1)
  (5/13) Installing ncurses-terminfo-base (6.1_p20191130-r0)
  (6/13) Installing ncurses-terminfo (6.1_p20191130-r0)
  (7/13) Installing ncurses-libs (6.1_p20191130-r0)
  (8/13) Installing readline (8.0.1-r0)
  (9/13) Installing sqlite-libs (3.30.1-r1)
  (10/13) Installing python2 (2.7.16-r3)
  (11/13) Installing py-setuptools (42.0.2-r0)
  (12/13) Installing py2-pip (18.1-r0)
  (13/13) Installing scipy-runtime (20200107.074517)
  Executing busybox-1.31.1-r8.trigger
  OK: 65 MiB in 27 packages
  (1/35) Installing libgcc (9.2.0-r3)
  (2/35) Installing libstdc++ (9.2.0-r3)
  (3/35) Installing binutils (2.33.1-r0)
  (4/35) Installing libmagic (5.37-r1)
  (5/35) Installing file (5.37-r1)
  (6/35) Installing gmp (6.1.2-r1)
  (7/35) Installing isl (0.18-r0)
  (8/35) Installing libgomp (9.2.0-r3)
  (9/35) Installing libatomic (9.2.0-r3)
  (10/35) Installing mpfr4 (4.0.2-r1)
  (11/35) Installing mpc1 (1.1.0-r1)
  (12/35) Installing gcc (9.2.0-r3)
  (13/35) Installing musl-dev (1.1.24-r0)
  (14/35) Installing libc-dev (0.7.2-r0)
  (15/35) Installing g++ (9.2.0-r3)
  (16/35) Installing make (4.2.1-r2)
  (17/35) Installing fortify-headers (1.1-r0)
  (18/35) Installing build-base (0.5-r1)
  (19/35) Installing pkgconf (1.6.3-r0)
  (20/35) Installing python2-dev (2.7.16-r3)
  (21/35) Installing libquadmath (9.2.0-r3)
  (22/35) Installing libgfortran (9.2.0-r3)
  (23/35) Installing gfortran (9.2.0-r3)
  (24/35) Installing openblas-ilp64 (0.3.7-r2)
  (25/35) Installing openblas (0.3.7-r2)
  (26/35) Installing openblas-dev (0.3.7-r2)
  (27/35) Installing libpng (1.6.37-r1)
  (28/35) Installing freetype (2.10.1-r0)
  (29/35) Installing zlib-dev (1.2.11-r3)
  (30/35) Installing libpng-dev (1.6.37-r1)
  (31/35) Installing freetype-dev (2.10.1-r0)
  (32/35) Installing blas (3.9.0-r1)
  (33/35) Installing lapack (3.9.0-r1)
  (34/35) Installing lapack-dev (3.9.0-r1)
  (35/35) Installing scipy-build (20200107.074518)
  Executing busybox-1.31.1-r8.trigger
  OK: 326 MiB in 62 packages
  Collecting Click (from -r requirements.txt (line 1))
    Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
  Collecting cycler (from -r requirements.txt (line 2))
    Downloading https://files.pythonhosted.org/packages/f7/d2/e07d3ebb2bd7af696440ce7e754c59dd546ffe1bbe732c8ab68b9c834e61/cycler-0.10.0-py2.py3-none-any.whl
  Collecting Flask (from -r requirements.txt (line 3))
    Downloading https://files.pythonhosted.org/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f43bbb1d3b/Flask-1.1.1-py2.py3-none-any.whl (94kB)
  Collecting itsdangerous (from -r requirements.txt (line 4))
    Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
  Collecting Jinja2 (from -r requirements.txt (line 5))
    Downloading https://files.pythonhosted.org/packages/65/e0/eb35e762802015cab1ccee04e8a277b03f1d8e53da3ec3106882ec42558b/Jinja2-2.10.3-py2.py3-none-any.whl (125kB)
  Collecting joblib (from -r requirements.txt (line 6))
    Downloading https://files.pythonhosted.org/packages/28/5c/cf6a2b65a321c4a209efcdf64c2689efae2cb62661f8f6f4bb28547cf1bf/joblib-0.14.1-py2.py3-none-any.whl (294kB)
  Collecting kiwisolver (from -r requirements.txt (line 7))
    Downloading https://files.pythonhosted.org/packages/16/e7/df58eb8868d183223692d2a62529a594f6414964a3ae93548467b146a24d/kiwisolver-1.1.0.tar.gz
  Collecting MarkupSafe (from -r requirements.txt (line 8))
    Downloading https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz
  Collecting mlxtend (from -r requirements.txt (line 9))
    Downloading https://files.pythonhosted.org/packages/52/04/c362f34f666f0ddc7cf593805e64d64fa670ed96fd9302e68549dd48287d/mlxtend-0.17.0-py2.py3-none-any.whl (1.3MB)
  Collecting pandas (from -r requirements.txt (line 10))
    Downloading https://files.pythonhosted.org/packages/b2/4c/b6f966ac91c5670ba4ef0b0b5613b5379e3c7abdfad4e7b89a87d73bae13/pandas-0.24.2.tar.gz (11.8MB)
      Complete output from command python setup.py egg_info:
      WARNING: The wheel package is not available.
        Failed building wheel for numpy
        Failed cleaning build dir for numpy
      ERROR: Failed to build one or more wheels
      Traceback (most recent call last):
        File "&lt;string&gt;", line 1, in &lt;module&gt;
        File "/tmp/pip-install-9fKYgP/pandas/setup.py", line 746, in &lt;module&gt;
          **setuptools_kwargs)
        File "/usr/lib/python2.7/site-packages/setuptools/__init__.py", line 144, in setup
          _install_setup_requires(attrs)
        File "/usr/lib/python2.7/site-packages/setuptools/__init__.py", line 139, in _install_setup_requires
          dist.fetch_build_eggs(dist.setup_requires)
        File "/usr/lib/python2.7/site-packages/setuptools/dist.py", line 721, in fetch_build_eggs
          replace_conflicting=True,
        File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 782, in resolve
          replace_conflicting=replace_conflicting
        File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1065, in best_match
          return self.obtain(req, installer)
        File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1077, in obtain
          return installer(requirement)
        File "/usr/lib/python2.7/site-packages/setuptools/dist.py", line 777, in fetch_build_egg
          return fetch_build_egg(self, req)
        File "/usr/lib/python2.7/site-packages/setuptools/installer.py", line 130, in fetch_build_egg
          raise DistutilsError(str(e))
      distutils.errors.DistutilsError: Command '['/usr/bin/python2', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmp6GfJkV', '--quiet', 'numpy&gt;=1.12.0']' returned non-zero exit status 1
  
      ----------------------------------------
  Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-9fKYgP/pandas/
  The command '/bin/sh -c apk --update add --virtual scipy-runtime python py-pip     &amp;&amp; apk add --virtual scipy-build         build-base python-dev openblas-dev freetype-dev pkgconfig gfortran lapack-dev     &amp;&amp; ln -s /usr/include/locale.h /usr/include/xlocale.h     &amp;&amp; pip install --no-cache-dir -r requirements.txt     &amp;&amp; apk del scipy-build     &amp;&amp; apk add --virtual scipy-runtime         freetype libgfortran libgcc libpng  libstdc++ musl openblas tcl tk     &amp;&amp; rm -rf /var/cache/apk/*' returned a non-zero code: 1
  </code></pre>
  
  <p>I am not able to find the actual reason as what mistake is been made here</p>