错误

Traceback (most recent call last):
  File "demo.py", line 13, in <module>
    from test_module import math
ModuleNotFoundError: No module named 'test_module'

Dockerfile

FROM python:3.7.3

RUN  pip install toml -i  "https://pypi.tuna.tsinghua.edu.cn/simple/"

RUN mkdir test_module
WORKDIR test_module/

COPY . .

ENTRYPOINT ["python3", "demo.py"]

一开始我这样写Dockerfile,发现获取不了自定义的module。

解决

上面的写法python不知道自己的工作目录,需要指明python的工作目录
改进后的Dockerfile如下:

FROM python:3.7.3

RUN  pip install toml -i  "https://pypi.tuna.tsinghua.edu.cn/simple/"

RUN mkdir app/test_module
WORKDIR app/test_module/

########################
ENV PATH=$PATH:/app
ENV PYTHONPATH /app
#######################
COPY . .

ENTRYPOINT ["python3", "demo.py"]

注:如果PYTHONPATH设置为/app/test_module,导入模块是在/app/test_module/test_module找对应的文件

参考

https://codeday.me/bug/20190828/1754108.html

01-02 21:55