正在 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/"
这一定是一个常见问题,但我找不到合适的答案:当 运行 我的 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/"