嗨,我有一个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 somefile
和model.py
时也存在错误,即使上述错误已解决。我想我不了解Docker中的依赖关系工作原理,并且没有正确解决依赖关系。仅以python方式(例如终端中的
$ python main.py
)运行时,这段代码可以正常工作。我在这部分找不到任何文件。有什么帮助吗?谢谢
最佳答案
错误是您在COPY main.py /
中执行Dockerfile
的位置。
您只复制main.py
文件。
而是将其替换为
COPY . .
这也将移动其他文件夹和文件。
关于python - 创建Docker镜像后; docker 运行给出ModuleNotFoundError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62015481/