基于Poetry构建Docker化Streamlit应用报No module named 'Lib'如何解决
报错原因
Lib是Windows平台Python安装目录下存放标准库的专属文件夹,并非Python跨平台通用的标准库顶层模块。你使用的Docker基础镜像python:3.8.8是基于Debian系统构建的,Linux系统下Python标准库默认存放在/usr/local/lib/python3.8/路径下,不存在顶层可导入的Lib模块,因此触发导入报错。- 该问题和Docker内Poetry、Python版本是否匹配开发环境无关,本质是你在Windows开发环境编写代码时,使用了仅适配Windows平台的错误导入语句。
修复方案
- 优先修改代码中的错误导入语句,删除
Lib前缀,使用Python标准导入写法即可:
import calendar import datetime import difflib
- 若导入语句来自无法修改的第三方依赖/遗留代码,可以在Dockerfile中添加软链接做临时兼容,在
WORKDIR /app指令后新增如下行:
RUN ln -s /usr/local/lib/python3.8/ Lib
内容的提问来源于stack exchange,提问作者incognito
相关产品推荐
相关产品推荐

