Can't install scipy

2019-07-16 08:46发布

问题:

I am trying to install scipy from a Dockerfile and I cannot for the life of me figure out how.

Here is the Dockerfile:

FROM python:3.5

ENV HOME /root

# Install dependencies
RUN apt-get update
RUN apt-get install -y gcc
RUN apt-get install -y build-essential
RUN apt-get install -y zlib1g-dev
RUN apt-get install -y wget
RUN apt-get install -y unzip
RUN apt-get install -y cmake
RUN apt-get install -y python3-dev
RUN apt-get install -y gfortran
RUN apt-get install -y python-numpy
RUN apt-get install -y python-matplotlib
RUN apt-get install -y ipython
RUN apt-get install -y ipython-notebook
RUN apt-get install -y python-pandas
RUN apt-get install -y python-sympy
RUN apt-get install -y python-nose

# Install Python packages
RUN pip install --upgrade pip
RUN pip install cython

# Install scipy
RUN apt-get install -y python-scipy

This builds an image, but when I run the container and try to import scipy it says:

Python 3.5.1 (default, Mar  9 2016, 03:30:07)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import scipy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'scipy'

I have tried using RUN pip install scipy and RUN pip install git+https://github.com/scipy/scipy.git but those throw an error before completing the build.

回答1:

You're using Python 3 but installing the Python 2 packages. Change your Dockerfile to the following:

FROM python:3.5

ENV HOME /root
ENV PYTHONPATH "/usr/lib/python3/dist-packages:/usr/local/lib/python3.5/site-packages"

# Install dependencies
RUN apt-get update \
    && apt-get upgrade -y \
    && apt-get autoremove -y \
    && apt-get install -y \
        gcc \
        build-essential \
        zlib1g-dev \
        wget \
        unzip \
        cmake \
        python3-dev \
        gfortran \
        libblas-dev \
        liblapack-dev \
        libatlas-base-dev \
    && apt-get clean

# Install Python packages
RUN pip install --upgrade pip \
    && pip install \
        ipython[all] \
        numpy \
        nose \
        matplotlib \
        pandas \
        scipy \
        sympy \
        cython \
    && rm -fr /root/.cache