【Docker×Django】後入れしたpandas がModuleNotFoundErrorになった
目次
【Docker×Django】後入れしたpandas がModuleNotFoundErrorになった
これはとりあえず解決できた方法としてメモしておこうと思います。
「やったら直った」というレベルで根本解決とは異なるかもしれません。
発生していた症状
1 2 3 4 5 |
#views.py import logging import time import pandas |
これでpandasに対してモジュールが無いと怒られました。
でもモジュールはインストールされているのでこれらのコマンド達にはちゃんと反応があります。
1 2 3 |
pip show pandas pip freeze pip list |
インストール名とモジュール名が違う?
多くの方のお手本を参考にさせて頂く限りそれもなさそう。
アンインストールして再インストールも実行してみましたが結果は変わらず。
で、Docker再構築してみようかと発想したのですが、これが上手くいきました。
変更したPythonのDockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
FROM python:3.8 #FROM python:3.8-buster # 作成したユーザーに切り替える #USER ${DOCKER_USER} # ユーザーを作成 ARG UID=1000 RUN useradd -m -u ${UID} 901_system-Ad03n RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install --upgrade pip \ && pip install -r requirements.txt ADD . /code/ RUN apt update; apt -y upgrade \ && apt-get install -y vim \ && apt install -y gnupg \ && wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \ && wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \ && apt install -y ./google-chrome-stable_current_amd64.deb \ && apt clean \ && rm -rf /var/lib/apt/lists/ \ && rm google-chrome-stable_current_amd64.deb RUN pip install selenium chromedriver-binary~=$(/usr/bin/google-chrome --version | perl -pe 's/([^0-9]+)([0-9]+\.[0-9]+).+/$2/g') \ && pip install django-allauth |
■requirements.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
asgiref==3.2.7 Django==3.0.5 pytz==2020.1 sqlparse==0.3.1 uwsgi==2.0.18 mysqlclient==1.4.6 certifi==2020.11.8 cffi==1.14.4 chardet==3.0.4 cryptography==3.2.1 cycler==0.10.0 defusedxml==0.6.0 django-allauth==0.44.0 idna==2.10 kiwisolver==1.3.1 matplotlib==3.3.3 numpy==1.19.4 oauthlib==3.1.0 pandas==1.1.4 Pillow==8.0.1 pycparser==2.20 PyJWT==1.7.1 pyparsing==2.4.7 requests==2.25.0 requests-oauthlib==1.3.0 six==1.15.0 urllib3==1.26.2 |
FROM python:3.8-busterを辞めてbusterで自動的にインストールされていたモジュールをrequirements.txtに書き出しました。
1 |
sudo /usr/local/bin/docker-compose up -d --build |
起動が終わってから pandas を書いたページを読み込んでみたらエラー無し。
結局何が原因だったのだろう…。
まとめ
コンテナ構築時にbusterやrequirements.txtに書いてなかったモジュールは読み込んでくれないとか。
推測するならそんなところなんだけど、そんなのあり得るのかな。
う~ん、出来たからよいものの…謎です。
-
前の記事
【Bootstrap】かっこいいテンプレ Gentelella を見つけたので解析① 2020.12.04
-
次の記事
【python】pandas 週の最大値と最小値の差分を出す方法 2020.12.07
コメントを残す