嗨,我有一个Python项目包含以下结构

在我的项目目录中

$ ls
models main.py Dockerfile

其中models是一个目录,
$ cd models
$ ls
model.py utils.py evaluation __init__.py

在我的main.py文件中,我有类似
from models import model

在我的model.py文件中
from .utils import *
from evaluation import somefile

我正在尝试创建一个docker镜像,并按照以下Dockerfile的说明进行操作
FROM python:3.7.2-slim


COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY main.py /
CMD [ "python", "./main.py" ]

在那里requirements.txt只需安装numpy等。

运行docker build -t test很好,并相应地创建事物。但是当我运行docker run test时。它给出了错误
Traceback (most recent call last):
  File "./main.py", line 1, in <module>
    from models import model
ModuleNotFoundError: No module named 'models'

我假设在from .utils import *上执行from evaluation import somefilemodel.py时也存在错误,即使上述错误已解决。

我想我不了解Docker中的依赖关系工作原理,并且没有正确解决依赖关系。仅以python方式(例如终端中的$ python main.py)运行时,这段代码可以正常工作。

我在这部分找不到任何文件。有什么帮助吗?谢谢

最佳答案

错误是您在COPY main.py /中执行Dockerfile的位置。

您只复制main.py文件。

而是将其替换为

COPY . .

这也将移动其他文件夹和文件。

关于python - 创建Docker镜像后; docker 运行给出ModuleNotFoundError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62015481/

10-14 11:56
查看更多