LoginSignup
0
0

More than 1 year has passed since last update.

Docker 内の poetry でインストールしたモジュールが ModuleNotFoundErrorとなったときの対応メモ

Posted at

現象

dockerでpoetry install して環境構築し、コンテナ内で poetry shell で仮想環境を起動すると “environment seems to be broken" と言われる。その後pythonを使用してもインストールしたモジュールが ModuleNotFoundError でインポートできない。

dockerfile

FROM python:3.9.5-slim-buster

WORKDIR /app

RUN apt update && apt install -y \
    curl \
    libgl1-mesa-glx \
    libglib2.0-dev

ENV PYTHONDONTWRITEBYTECODE=1 \
    POETRY_VERSION=1.3.2 \
    PYTHONUNBUFFERED=1

ENV POETRY_HOME=/opt/poetry \
    POETRY_VIRTUALENVS_CREATE=true

ENV PATH=$POETRY_HOME/bin:$PATH

RUN curl -sSL https://install.python-poetry.org/ | python -

COPY ./myproj .
RUN poetry install

解決法

ローカルで作成した .venv を削除し、 dockerfile を再ビルドしたら動くようになった。

原因考察

ローカルのファイル変更内容をすぐに反映するために、Dockerにボリュームマウントをしていた。マウントしたフォルダの中にはローカルのpoetryで作成した.venv 環境フォルダがあった。poetry はデフォルトで .venv の環境を見に行くが、これはコンテナ外で生成されたもの。

そのため、コンテナにボリュームマウントした際に、ローカルで作成した.venv 環境を Docker内で使用しようとしてエラーになった。 ようだ。。。

反省

poetry 使うなら、コンテナの中で使うか、外で使うか、どっちかにする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0