正在 Docker 个容器中导入 python 个文件

Importing python files in Docker container

这一定是一个常见问题,但我找不到合适的答案:当 运行 我的 docker 图片时,我收到导入错误:

File "./app/main.py", line 8, in <module>
import wekinator
ModuleNotFoundError: No module named 'wekinator'`

如何在 Docker 中导入本地 python 模块? COPY 命令不会复制整个“app”文件夹(包括两个文件),从而保留正确的导入位置吗?

.
├── Dockerfile
├── README.md
└── app
    ├── main.py
    └── wekinator.py
FROM python:3.7

RUN pip install fastapi uvicorn python-osc

EXPOSE 80

COPY ./app /app

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]

您需要查看您在安装时使用的 WORKDIR

您似乎在尝试从工作目录执行脚本,但您正在将数据复制到容器内的根文件夹中。

创建 docker、运行 它并检查 COPY 命令中复制的文件是否在正确的文件夹中。

您可以这样做 运行宁 docker compose exec <name of your container> ls 并检查 ls 命令是否列出了您要调用的文件夹。

经过多次混淆后,我通过在 Dockerfile 中设置 PYTHONPATH env 变量将容器设置为 运行:

ENV PYTHONPATH "${PYTHONPATH}:/app/"