【发布时间】:2020-05-26 05:50:04
【问题描述】:
嗨,我有一个 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'
我假设在model.py 处执行from .utils import * 和from evaluation import somefile 时也会出现错误,即使上述错误已解决。
我想我不明白依赖关系在 Docker 中是如何工作的,也没有正确解决依赖关系。这段代码在终端中以$ python main.py等python方式运行时可以正常工作。
我在这部分找不到任何文件。有什么帮助吗?谢谢
【问题讨论】:
-
可能是你的文件结构造成的。stackoverflow.com/questions/60603593/…我最近也遇到了同样的问题
-
@MarkMeyer 您好,感谢您的回复。你的意思是,如果我的
main.py调用/导入了其中任何一个,我需要复制项目目录中的所有文件/目录? -
是的,您需要通过复制或添加目录作为挂载点来为 docker 提供您想要使用的文件。此外,进口似乎不正确。这在容器外有效吗?
-
@MarkMeyer;是的,只要在终端中运行
$python main.py,它就可以正常工作