Контейнер Python Docker, модуль не найден

У меня есть следующая структура проекта

twoFlasks/
├── app.py
├── common/
│   ├── file1.py        
│   ├── file2.py       
│   └── file3.py    
├── Dockerfile
├── requirements.txt       
├── bot1/   
│   │        
│   ├── routes/
│   │   └── bot1_routes.py
└── bot2/
    └── routes/
        └── bot2_routes.py

И следующий Dockerfile:

FROM python:3.8

WORKDIR /project

COPY requirements.txt .
COPY app.py .

RUN pip3 install -r requirements.txt

COPY bot1/ .
COPY bot2/ .
COPY common/ .

EXPOSE 5000 3000

CMD ["python", "./app.py"]

Образ создан успешно, но когда мне нужно запустить контейнер, я получаю следующее сообщение об ошибке в журналах из моего файла app.py.

Traceback (most recent call last):
  File "./app.py", line 9, in <module>
    from bot2.routes import bot2_routes
ModuleNotFoundError: No module named 'bot2'

Это работает локально, но не в контейнере Docker, и я немного в недоумении. Если кто знает в чем может быть проблема, буду признателен за помощь!


person Kinnturo    schedule 08.09.2020    source источник


Ответы (2)


Если вы используете Python ‹ 3.3, вам нужен файл __init__.py в корневых каталогах вашего пакета, чтобы помочь Python создать пространство имен: Python – модуль не найден

person Aziz Sonawalla    schedule 08.09.2020
comment
Я использую Python 3.8, если я правильно понимаю, мне не нужны файлы __init__.py, верно? - person Kinnturo; 08.09.2020
comment
И если бы я добавил файл инициализации, это было бы в bot2/ или в bot2/routes/? - person Kinnturo; 08.09.2020

Итак, что исправило мою проблему, так это изменение в файле Dockerfile.

COPY bot1/ ./bot1
COPY bot2/ .bot2
COPY common/ ./common

Вместо того, чтобы просто копировать папки в .

person Kinnturo    schedule 10.09.2020