我有两个python文件a.py
和b.py
,dir结构是这样的:
文件(目录)
- 主要(目录)
- a.py
- Dockerfile
- b.py
- 主要(目录)
在a.py
中,有一些这样的代码:
import sys
sys.path.append('..')
import b
我可以通过命令行很好地运行它。但用docker运行失败。以下是构建和运行 docker 镜像的代码:
Dockerfile:
FROM python:3.6
ADD a.py /.
WORKDIR /.
ENV PYTHONPATH /files/
CMD [ "python3", "a.py" ]
构建镜像的命令:
# cd /files/main
# docker build -t a:1.0 .
镜像构建成功以及运行镜像的命令:
# docker run --name a a:1.0
它给了我:
Traceback (most recent call last):
File "a.py", line 3, in <module>
import b
ModuleNotFoundError: No module named 'b'
我的问题是,在这个例子中,我如何以正确的方式构建和运行图像?
最佳答案
更改您的 Dockerfile 以复制 a.py
& b.py
-
FROM python:3.6
ENV PYTHONPATH /files/
WORKDIR /app
COPY main/a.py b.py ./
CMD [ "python3", "a.py" ]
运行docker build
从主目录外部 -
$ docker build -f main/Dockerfile -t a:1.0 .
$ docker run --name a a:1.0
尝试一下!
关于python - 使用docker时导入自定义python模块文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55808161/