Dockerイメージを作成しようとしています。 Dockerfileは次のとおりです。
# Use the official Python 3.6.5 image
FROM python:3.6.5-Alpine3.7
# Set the working directory to /app
WORKDIR /app
# Get the
COPY requirements.txt /app
RUN pip3 install --no-cache-dir -r requirements.txt
# Configuring access to Jupyter
RUN mkdir /notebooks
RUN jupyter notebook --no-browser --ip 0.0.0.0 --port 8888 /notebooks
Requirements.txtファイルは次のとおりです。
jupyter
numpy==1.14.3
pandas==0.23.0rc2
scipy==1.0.1
scikit-learn==0.19.1
pillow==5.1.1
matplotlib==2.2.2
seaborn==0.8.1
コマンドdocker build -t standard .
を実行すると、Dockerがパンダをインストールしようとしたときにエラーが発生します。エラーは次のとおりです。
Collecting pandas==0.23.0rc2 (from -r requirements.txt (line 3))
Downloading https://files.pythonhosted.org/packages/46/5c/a883712dad8484ef907a2f42992b122acf2bcecbb5c2aa751d1033908502/pandas-0.23.0rc2.tar.gz (12.5MB)
Complete output from command python setup.py Egg_info:
/bin/sh: svnversion: not found
/bin/sh: svnversion: not found
non-existing path in 'numpy/distutils': 'site.cfg'
Could not locate executable gfortran
... (loads of other stuff)
Command "python setup.py Egg_info" failed with error code 1 in /tmp/pip-install-xb6f6a5o/pandas/
The command '/bin/sh -c pip3 install --no-cache-dir -r requirements.txt' returned a non-zero code: 1
以前のバージョンのpandas == 0.22.0をインストールしようとすると、次のエラーが発生します。
Step 5/7 : RUN pip3 install --no-cache-dir -r requirements.txt
---> Running in 5810ea896689
Collecting jupyter (from -r requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/83/df/0f5dd132200728a86190397e1ea87cd76244e42d39ec5e88efd25b2abd7e/jupyter-1.0.0-py2.py3-none-any.whl
Collecting numpy==1.14.3 (from -r requirements.txt (line 2))
Downloading https://files.pythonhosted.org/packages/b0/2b/497c2bb7c660b2606d4a96e2035e92554429e139c6c71cdff67af66b58d2/numpy-1.14.3.Zip (4.9MB)
Collecting pandas==0.22.0 (from -r requirements.txt (line 3))
Downloading https://files.pythonhosted.org/packages/08/01/803834bc8a4e708aedebb133095a88a4dad9f45bbaf5ad777d2bea543c7e/pandas-0.22.0.tar.gz (11.3MB)
Could not find a version that satisfies the requirement Cython (from versions: )
No matching distribution found for Cython
The command '/bin/sh -c pip3 install --no-cache-dir -r requirements.txt' returned a non-zero code: 1
私もパンダの前にサイフォンとsetuptoolsをインストールしようとしましたが、pip3 install pandas行で同じNo matching distribution found for Cython
エラーが発生しました。
pandasをインストールする方法を教えてください。
これでDockerイメージを作成できました。 FROM python:3.6.5-Alpine3.7
とパンダの間にはいくつかのバージョンの非互換性があったに違いありません。 PythonバージョンをFROM python:3
に変更しましたが、正常に機能しました(pillow
バージョンを5.1.0
にダウングレードする必要もありました)。
Alpineには、デフォルトではビルドツールが含まれていません。ビルドツールをインストールし、ロケールのシンボリックリンクを作成します。
$ apk add --update curl gcc g++
$ ln -s /usr/include/locale.h /usr/include/xlocale.h
$ pip install numpy
私はこの質問に答えたことに気づきましたが、最近、numpyとpandas dockerized projectとの依存関係に関して同様の問題がありました。とはいえ、これは未来。
私の解決策:
Aviv Sela で指摘されているように、Alpineにはデフォルトでビルドツールが含まれていないため、Dockerfileを介して追加する必要があります。したがって、numpyおよびpandasをコンテナーのAlpineに正常にインストールするために必要なビルドパッケージを含む以下のDockerfileを参照してください。
FROM python:3.6-Alpine3.7
RUN apk add --no-cache --update \
python3 python3-dev gcc \
gfortran musl-dev g++ \
libffi-dev openssl-dev \
libxml2 libxml2-dev \
libxslt libxslt-dev \
libjpeg-turbo-dev zlib-dev
RUN pip install --upgrade pip
ADD requirements.txt .
RUN pip install -r requirements.txt
Requirements.txt
numpy==1.17.1
pandas==0.25.1
おそらく、ベースPythonではなくpandasイメージから構築するほうがよいでしょう。パンダを再インストールする必要がないため、これにより反復がより速く簡単になるはずです。私は好きです。 amancevince/pandas( https://hub.docker.com/r/amancevice/pandas/tags )すべてのpandasタグで利用可能なAlpineおよびDebianイメージがあります、ただし、これらはすべてpython 3.7になっている可能性があります。