Docker容器内安装自定义pip库后无法导入WasteClassifier求助
问题:Docker容器中无法导入自定义Python库WasteClassifier
问题场景
需在Docker容器内通过pip安装自定义WasteClassifier库,并运行依赖该库的主脚本,但始终遭遇导入错误。
核心Dockerfile代码
FROM ubuntu COPY WasteClassifier /opt/WasteClassifier RUN apt update && apt-get -y install sudo && sudo apt-get install -y python3 python3-pip RUN export PYTHONPATH="/usr/local/lib/python3.10/dist-packages" RUN python3 -m pip install --target="/usr/lib/python3.10/dist-packages" /opt/WasteClassifier RUN python3 -c 'import WasteClassifier'
触发的错误信息
运行主脚本时抛出:
ModuleNotFoundError: No module named 'WasteClassifier'
排查细节
- 打印Python可导入模块列表,
WasteClassifier在列表内,但依然无法导入 - 执行
pip list可见该库已安装 - 相同代码在Ubuntu本地主机环境可正常运行
已尝试的无效操作
- 手动导出
PYTHONPATH环境变量 - 修改pip安装的目标路径
- 代码中调整Python的
sys.path - 更换不同版本的pip
- 切换Python和Ubuntu镜像版本
问题解决
调整项目目录结构,并同步修改setup.py和__init__.py后,问题得到解决:
原目录结构
WasteClassifier |-- Dockerfile |-- WasteClassifier |-- setup.py |-- WasteClassifier |-- module1 |-- module2
调整后的目录结构
WasteClassifier |-- Dockerfile |-- setup.py |-- WasteClassifier |-- module1 |-- module2
推测是原目录的冗余层级导致pip安装时无法正确识别Python包的结构,配合setup.py和__init__.py的修正,最终解决了导入问题。
内容的提问来源于stack exchange,提问作者Patrycy
相关产品推荐
相关产品推荐

