# Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. FROM jupyter/minimal-notebook MAINTAINER Jupyter Project USER root # libav-tools for matplotlib anim RUN apt-get update && \ apt-get install -y --no-install-recommends libav-tools && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* USER $NB_USER # Install Python 3 packages # Remove pyqt and qt pulled in for matplotlib since we're only ever going to # use notebook-friendly backends in these images RUN conda install --quiet --yes \ 'nomkl' \ 'ipywidgets=5.2*' \ 'pandas=0.19*' \ 'numexpr=2.6*' \ 'matplotlib=1.5*' \ 'scipy=0.17*' \ 'seaborn=0.7*' \ 'scikit-learn=0.18*' \ 'scikit-image=0.11*' \ 'sympy=1.0*' \ 'cython=0.23*' \ 'patsy=0.4*' \ 'statsmodels=0.6*' \ 'cloudpickle=0.1*' \ 'dill=0.2*' \ 'numba=0.23*' \ 'bokeh=0.11*' \ 'sqlalchemy=1.0*' \ 'hdf5=1.8.17' \ 'h5py=2.6*' \ 'vincent=0.4.*' \ 'beautifulsoup4=4.5.*' \ 'xlrd' && \ conda remove --quiet --yes --force qt pyqt && \ conda clean -tipsy # Activate ipywidgets extension in the environment that runs the notebook server RUN jupyter nbextension enable --py widgetsnbextension --sys-prefix # Install Python 2 packages # Remove pyqt and qt pulled in for matplotlib since we're only ever going to # use notebook-friendly backends in these images RUN conda create --quiet --yes -p $CONDA_DIR/envs/python2 python=2.7 \ 'nomkl' \ 'ipython=4.2*' \ 'ipywidgets=5.2*' \ 'pandas=0.19*' \ 'numexpr=2.6*' \ 'matplotlib=1.5*' \ 'scipy=0.17*' \ 'seaborn=0.7*' \ 'scikit-learn=0.17*' \ 'scikit-image=0.11*' \ 'sympy=1.0*' \ 'cython=0.23*' \ 'patsy=0.4*' \ 'statsmodels=0.6*' \ 'cloudpickle=0.1*' \ 'dill=0.2*' \ 'numba=0.23*' \ 'bokeh=0.11*' \ 'hdf5=1.8.17' \ 'h5py=2.6*' \ 'sqlalchemy=1.0*' \ 'pyzmq' \ 'vincent=0.4.*' \ 'beautifulsoup4=4.5.*' \ 'xlrd' && \ conda remove -n python2 --quiet --yes --force qt pyqt && \ conda clean -tipsy # Add shortcuts to distinguish pip for python2 and python3 envs RUN ln -s $CONDA_DIR/envs/python2/bin/pip $CONDA_DIR/bin/pip2 && \ ln -s $CONDA_DIR/bin/pip $CONDA_DIR/bin/pip3 # Import matplotlib the first time to build the font cache. ENV XDG_CACHE_HOME /home/$NB_USER/.cache/ RUN MPLBACKEND=Agg $CONDA_DIR/envs/python2/bin/python -c "import matplotlib.pyplot" # Configure ipython kernel to use matplotlib inline backend by default RUN mkdir -p $HOME/.ipython/profile_default/startup COPY mplimporthook.py $HOME/.ipython/profile_default/startup/ USER root # Install Python 2 kernel spec globally to avoid permission problems when NB_UID # switching at runtime and to allow the notebook server running out of the root # environment to find it. Also, activate the python2 environment upon kernel # launch. RUN pip install kernda --no-cache && \ $CONDA_DIR/envs/python2/bin/python -m ipykernel install && \ kernda -o -y /usr/local/share/jupyter/kernels/python2/kernel.json && \ pip uninstall kernda -y USER $NB_USER