Сбой импорта модуля только в докере - PullRequest
0 голосов
/ 24 февраля 2019

Я использую сторонние пакеты в своем приложении Flask.Когда я тестировал эти пакеты вне приложения и докера Flask, они работали просто отлично.Когда я включаю их в приложение, после сборки и запуска докер завершает работу при некоторых операциях импорта.Я не могу выяснить, что мне нужно сделать, чтобы он правильно импортировал модули.

Это структура проекта:

flask_app
├── Dockerfile
├── canetis
|   ├── install.sh
|   ├── __init__.py
|   ├── align.py
|   ├── utils.py
|   ├── gentle
|       ├── install.sh
|       ├── gentle
|           ├── __init__.py
|           ├── resources.py
|           ├── util
|               ├── __init__.py
|               ├── paths.py
|       ├── ext
|           ├── kaldi
|               ├── install.sh

Пакет gentle клонируется из git вcanetis/install.sh скрипт.

Используемый файл dockerfile:

FROM python:2.7

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

WORKDIR /app

RUN apt-get update
RUN pip install --upgrade pip

RUN apt-get update && \
      apt-get -y install sudo

ADD ./requirements.txt ./requirements.txt
RUN pip install -r requirements.txt

ADD . /app

RUN cd ./canetis && ./install.sh && source ~/.bashrc

ENV WEB_CONCURRENCY 5

CMD gunicorn app:app

При сборке докера, если происходит сбой с этой ошибкой:

| Traceback (most recent call last):
|   File "/usr/local/lib/python2.7/runpy.py", line 174, in _run_module_as_main
|     "__main__", fname, loader, pkg_name)
|   File "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code
|     exec code in run_globals
|   File "/app/app.py", line 3, in <module>
|     import tasks
|   File "tasks.py", line 3, in <module>
|     from canetis.align import align
|   File "canetis/align.py", line 3, in <module>
|     from utils import run_gentle
|   File "canetis/utils.py", line 2, in <module>
|     import gentle as gentle
|   File "/usr/local/lib/python2.7/site-packages/gentle/__init__.py", line 2, in <module>
|     from resources import Resources
|   File "/usr/local/lib/python2.7/site-packages/gentle/resources.py", line 4, in <module>
|     from util.paths import get_resource, ENV_VAR
| ImportError: No module named util.paths

Может быть, проблема в том, что модуль gentle имеетвложенная папка называется нежная и поэтому Python не может найти ее правильно?Но почему это работает вне докера?Любая помощь приветствуется.

...